github Python re-analysis due

earlyprototype/kanbanger

github

An MCP-driven kanban for mixed human/agent work: a server-enforced human-approval gate before any task is marked done, with optional GitHub Projects sync.

maintainer
earlyprototype
license
MIT
first seen
2026-07-02
last seen
2026-09-01
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 11 tools
transport stdio counts 11 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • add_task
  • approve_done
  • delete_task
  • doctor
  • get_sync_status
  • list_tasks
  • move_task
  • propose_done
  • reject_review
  • setup_project
  • sync_to_github
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit b16ac12 · analyzer v33 · 1w ago

skills & prompt files 1

code evidence vv3.0.0 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 36

filesystem 21

  • fs earlyprototype-kanbanger-b16ac12/kanban_doctor.py :67 from pathlib import Path
  • fs earlyprototype-kanbanger-b16ac12/kanban_io.py :26 from pathlib import Path
  • fs earlyprototype-kanbanger-b16ac12/kanbanger/binding.py :41 from pathlib import Path
  • fs earlyprototype-kanbanger-b16ac12/kanbanger/cli.py :16 from pathlib import Path
  • fs earlyprototype-kanbanger-b16ac12/kanbanger/provision.py :38 from pathlib import Path
  • fs earlyprototype-kanbanger-b16ac12/kanbanger/resources.py :119 with open(kanban_path, 'r', encoding='utf-8') as f:
  • fs earlyprototype-kanbanger-b16ac12/kanbanger/tools.py :335 with open(kanban_path, 'r', encoding='utf-8') as f:
  • fs (weak) earlyprototype-kanbanger-b16ac12/scripts/setup-venv.py :37 from pathlib import Path
  • fs earlyprototype-kanbanger-b16ac12/setup.py :2 from pathlib import Path
  • fs earlyprototype-kanbanger-b16ac12/sync_kanban.py :10 import shutil
  • fs (weak) earlyprototype-kanbanger-b16ac12/tests/conftest.py :5 from pathlib import Path
  • fs (weak) earlyprototype-kanbanger-b16ac12/tests/test_add_task_shape.py :18 from pathlib import Path
  • fs (weak) earlyprototype-kanbanger-b16ac12/tests/test_binding.py :21 import shutil
  • fs (weak) earlyprototype-kanbanger-b16ac12/tests/test_doctor_tool.py :28 from pathlib import Path
  • fs (weak) earlyprototype-kanbanger-b16ac12/tests/test_ensure_review_column.py :5 from pathlib import Path
  • fs (weak) earlyprototype-kanbanger-b16ac12/tests/test_kanban_doctor.py :20 from pathlib import Path
  • fs (weak) earlyprototype-kanbanger-b16ac12/tests/test_pre_commit_hook_tty.py :31 import shutil
  • fs (weak) earlyprototype-kanbanger-b16ac12/tests/test_provision.py :14 from pathlib import Path
  • fs (weak) earlyprototype-kanbanger-b16ac12/tests/test_setup_venv_claude_md.py :7 from pathlib import Path
  • fs (weak) earlyprototype-kanbanger-b16ac12/tests/test_stdio_e2e.py :22 from pathlib import Path
  • fs (weak) earlyprototype-kanbanger-b16ac12/tests/test_sync_kanban_dotenv.py :36 from pathlib import Path

shell / exec 6

  • shell earlyprototype-kanbanger-b16ac12/kanbanger/tools.py :13 import subprocess
  • shell (weak) earlyprototype-kanbanger-b16ac12/tests/test_binding.py :22 import subprocess
  • shell (weak) earlyprototype-kanbanger-b16ac12/tests/test_doctor_tool.py :25 import subprocess
  • shell (weak) earlyprototype-kanbanger-b16ac12/tests/test_kanban_doctor.py :17 import subprocess
  • shell (weak) earlyprototype-kanbanger-b16ac12/tests/test_pre_commit_hook_tty.py :32 import subprocess
  • shell (weak) earlyprototype-kanbanger-b16ac12/tests/test_sync_kanban_dotenv.py :33 import subprocess

network 4

  • net earlyprototype-kanbanger-b16ac12/kanban_doctor.py :591 import requests
  • net earlyprototype-kanbanger-b16ac12/kanbanger/resources.py :11 import urllib.request
  • net earlyprototype-kanbanger-b16ac12/sync_kanban.py :336 import requests
  • net (weak) earlyprototype-kanbanger-b16ac12/tests/test_doctor_tool.py :189 for the trap above: the trapped requests.post IS reached)."""

secrets 3

  • secrets earlyprototype-kanbanger-b16ac12/kanbanger/resources.py :244 token = os.getenv("GITHUB_TOKEN") or dotenv_overlay.get("GITHUB_TOKEN")
  • secrets earlyprototype-kanbanger-b16ac12/kanbanger/tools.py :819 if not os.getenv("GITHUB_TOKEN"):
  • secrets earlyprototype-kanbanger-b16ac12/sync_kanban.py :763 token = os.environ.get('GITHUB_TOKEN')

tool registrations 11

  • add_task earlyprototype-kanbanger-b16ac12/kanbanger/tools.py :281
  • move_task earlyprototype-kanbanger-b16ac12/kanbanger/tools.py :396
  • delete_task earlyprototype-kanbanger-b16ac12/kanbanger/tools.py :571
  • list_tasks earlyprototype-kanbanger-b16ac12/kanbanger/tools.py :689
  • sync_to_github earlyprototype-kanbanger-b16ac12/kanbanger/tools.py :784
  • get_sync_status earlyprototype-kanbanger-b16ac12/kanbanger/tools.py :905
  • propose_done earlyprototype-kanbanger-b16ac12/kanbanger/tools.py :951
  • approve_done earlyprototype-kanbanger-b16ac12/kanbanger/tools.py :1045
  • reject_review earlyprototype-kanbanger-b16ac12/kanbanger/tools.py :1138
  • setup_project earlyprototype-kanbanger-b16ac12/kanbanger/tools.py :1304
  • doctor earlyprototype-kanbanger-b16ac12/kanbanger/tools.py :1366

declared dependencies 3

  • mcp@>=1.12.0,<2.0.0
  • requests@>=2.25.0
  • python-dotenv@>=0.19.0