github Python re-analysis due

fotodeveloper/dct

github

Persistent memory & issue tracking for AI coding agents — todos, changelogs, plans, sprints & session handoffs in one cross-project database over MCP. Built for Claude Code.

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

Drift inferred · capture-to-capture

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

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

tools

  • add_changelog
  • add_checkpoint
  • add_item_to_current_sprint
  • add_note
  • add_plan_section
  • assign_item_to_sprint
  • clear_sprint
  • complete_checkpoint
  • complete_plan_checkpoint
  • consume_handoff
  • count_unreleased_changelog
  • create_decision
  • create_handoff
  • create_item
  • create_plan
  • create_sprint
  • delete_handoff
  • export_changelog
  • get_context_snapshot
  • get_handoff
  • get_item
  • get_plan
  • handoff_work
  • ingest_plan_file
  • list_changelog
  • list_checkpoints
  • list_decisions
  • list_handoffs
  • list_items
  • list_items_in_sprint
  • list_plan_sections
  • list_plans
  • list_projects
  • list_sprints
  • pickup_work
  • promote_checkpoint_to_item
  • promote_section_to_item
  • promote_section_to_sprint
  • reject_checkpoint
  • reject_plan_checkpoint
  • release_changelog
  • remove_item_from_current_sprint
  • remove_item_from_sprint
  • reopen_checkpoint
  • resolve_item
  • review_sprint
  • set_sprint
  • supersede_decision
  • update_decision
  • update_handoff
  • update_item
  • update_sprint
skills & danger signals github-tarball
code evidence vHEAD · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 114

filesystem 24

  • fs fotodeveloper-dct-34f38f7/dct/assets/__init__.py :9 from pathlib import Path
  • fs fotodeveloper-dct-34f38f7/dct/cli.py :12 from pathlib import Path
  • fs fotodeveloper-dct-34f38f7/dct/config.py :16 from pathlib import Path
  • fs fotodeveloper-dct-34f38f7/dct/core/checkpoints.py :13 # or rejected. The set is intentionally open (see `kind` column docstring in
  • fs fotodeveloper-dct-34f38f7/dct/core/plans/classify.py :16 import shutil
  • fs fotodeveloper-dct-34f38f7/dct/core/plans/ingest.py :23 from pathlib import Path
  • fs fotodeveloper-dct-34f38f7/dct/core/version.py :5 from pathlib import Path
  • fs fotodeveloper-dct-34f38f7/dct/db.py :10 from pathlib import Path
  • fs fotodeveloper-dct-34f38f7/dct/integrations/claude.py :7 import shutil
  • fs fotodeveloper-dct-34f38f7/dct/migrate.py :47 import shutil
  • fs fotodeveloper-dct-34f38f7/dct/paths.py :22 from pathlib import Path, PurePath
  • fs fotodeveloper-dct-34f38f7/dct/update.py :29 from pathlib import Path
  • fs (weak) fotodeveloper-dct-34f38f7/scripts/check_numbers.py :38 from pathlib import Path
  • fs (weak) fotodeveloper-dct-34f38f7/tests/test_check_numbers.py :8 from pathlib import Path
  • fs (weak) fotodeveloper-dct-34f38f7/tests/test_config.py :183 with open(config_path, "rb") as f:
  • fs (weak) fotodeveloper-dct-34f38f7/tests/test_hook_changelog_stop.py :15 import shutil
  • fs (weak) fotodeveloper-dct-34f38f7/tests/test_ingest_dogfood.py :12 import shutil
  • fs (weak) fotodeveloper-dct-34f38f7/tests/test_migrate.py :232 import shutil as _shutil
  • fs (weak) fotodeveloper-dct-34f38f7/tests/test_packaging.py :15 from pathlib import Path
  • fs (weak) fotodeveloper-dct-34f38f7/tests/test_paths.py :14 from pathlib import Path, PureWindowsPath
  • fs (weak) fotodeveloper-dct-34f38f7/tests/test_plan_ingest.py :137 from pathlib import Path
  • fs (weak) fotodeveloper-dct-34f38f7/tests/test_restructure.py :12 from pathlib import Path
  • fs (weak) fotodeveloper-dct-34f38f7/tests/test_web_app.py :184 from pathlib import Path
  • fs (weak) fotodeveloper-dct-34f38f7/tests/test_windows_support.py :84 from pathlib import Path

shell / exec 10

  • shell fotodeveloper-dct-34f38f7/dct/cli.py :9 import subprocess
  • shell fotodeveloper-dct-34f38f7/dct/core/plans/classify.py :17 import subprocess
  • shell fotodeveloper-dct-34f38f7/dct/integrations/claude.py :8 import subprocess
  • shell (weak) fotodeveloper-dct-34f38f7/scripts/check_numbers.py :34 import subprocess
  • shell (weak) fotodeveloper-dct-34f38f7/tests/test_hook_bypass.py :10 import subprocess
  • shell (weak) fotodeveloper-dct-34f38f7/tests/test_hook_changelog_stop.py :16 import subprocess
  • shell (weak) fotodeveloper-dct-34f38f7/tests/test_hook_plan_autoscan.py :8 import subprocess
  • shell (weak) fotodeveloper-dct-34f38f7/tests/test_hook_task_mirror.py :12 import subprocess
  • shell (weak) fotodeveloper-dct-34f38f7/tests/test_plan_classify.py :7 import subprocess
  • shell (weak) fotodeveloper-dct-34f38f7/tests/test_server_wire.py :13 import subprocess

network 3

  • net fotodeveloper-dct-34f38f7/dct/cli.py :8 import socket
  • net fotodeveloper-dct-34f38f7/dct/update.py :30 from urllib.request import urlopen
  • net (weak) fotodeveloper-dct-34f38f7/tests/test_cli_web.py :9 import socket

database 22

  • db fotodeveloper-dct-34f38f7/dct/cli.py :174 import sqlalchemy as sa_mod
  • db fotodeveloper-dct-34f38f7/dct/core/analytics.py :16 import sqlalchemy as sa
  • db fotodeveloper-dct-34f38f7/dct/core/changelog.py :5 import sqlalchemy as sa
  • db fotodeveloper-dct-34f38f7/dct/core/checkpoints.py :5 import sqlalchemy as sa
  • db fotodeveloper-dct-34f38f7/dct/core/decisions.py :15 import sqlalchemy as sa
  • db fotodeveloper-dct-34f38f7/dct/core/engine.py :11 import sqlalchemy as sa
  • db fotodeveloper-dct-34f38f7/dct/core/handoff.py :10 import sqlalchemy as sa
  • db fotodeveloper-dct-34f38f7/dct/core/items.py :6 import sqlalchemy as sa
  • db fotodeveloper-dct-34f38f7/dct/core/plans/crud.py :18 import sqlalchemy as sa
  • db fotodeveloper-dct-34f38f7/dct/core/projects.py :6 import sqlalchemy as sa
  • db fotodeveloper-dct-34f38f7/dct/core/sprint.py :23 import sqlalchemy as sa
  • db fotodeveloper-dct-34f38f7/dct/core/sprints.py :32 import sqlalchemy as sa
  • db fotodeveloper-dct-34f38f7/dct/db.py :12 import sqlalchemy as sa
  • db fotodeveloper-dct-34f38f7/dct/export.py :6 import sqlalchemy as sa
  • db fotodeveloper-dct-34f38f7/dct/mcp/server.py :234 import sqlalchemy as sa
  • db fotodeveloper-dct-34f38f7/dct/migrate.py :48 import sqlite3
  • db fotodeveloper-dct-34f38f7/dct/web/changes.py :13 import sqlalchemy as sa
  • db fotodeveloper-dct-34f38f7/dct/workflows/session.py :36 import sqlalchemy as sa
  • db (weak) fotodeveloper-dct-34f38f7/tests/test_engine.py :5 import sqlalchemy as sa
  • db (weak) fotodeveloper-dct-34f38f7/tests/test_migrate.py :409 import sqlite3
  • db (weak) fotodeveloper-dct-34f38f7/tests/test_migration.py :11 import sqlalchemy as sa
  • db (weak) fotodeveloper-dct-34f38f7/tests/test_provenance.py :11 import sqlalchemy as sa

tool registrations 52

  • list_projects fotodeveloper-dct-34f38f7/dct/mcp/server.py :326
  • create_item fotodeveloper-dct-34f38f7/dct/mcp/server.py :349
  • list_items fotodeveloper-dct-34f38f7/dct/mcp/server.py :413
  • get_item fotodeveloper-dct-34f38f7/dct/mcp/server.py :466
  • update_item fotodeveloper-dct-34f38f7/dct/mcp/server.py :483
  • resolve_item fotodeveloper-dct-34f38f7/dct/mcp/server.py :553
  • add_note fotodeveloper-dct-34f38f7/dct/mcp/server.py :592
  • add_checkpoint fotodeveloper-dct-34f38f7/dct/mcp/server.py :621
  • complete_checkpoint fotodeveloper-dct-34f38f7/dct/mcp/server.py :663
  • reject_checkpoint fotodeveloper-dct-34f38f7/dct/mcp/server.py :692
  • reopen_checkpoint fotodeveloper-dct-34f38f7/dct/mcp/server.py :723
  • list_checkpoints fotodeveloper-dct-34f38f7/dct/mcp/server.py :749
  • add_changelog fotodeveloper-dct-34f38f7/dct/mcp/server.py :779
  • list_changelog fotodeveloper-dct-34f38f7/dct/mcp/server.py :827
  • count_unreleased_changelog fotodeveloper-dct-34f38f7/dct/mcp/server.py :852
  • release_changelog fotodeveloper-dct-34f38f7/dct/mcp/server.py :871
  • export_changelog fotodeveloper-dct-34f38f7/dct/mcp/server.py :917
  • set_sprint fotodeveloper-dct-34f38f7/dct/mcp/server.py :958
  • clear_sprint fotodeveloper-dct-34f38f7/dct/mcp/server.py :997
  • review_sprint fotodeveloper-dct-34f38f7/dct/mcp/server.py :1019
  • create_handoff fotodeveloper-dct-34f38f7/dct/mcp/server.py :1060
  • list_handoffs fotodeveloper-dct-34f38f7/dct/mcp/server.py :1107
  • get_handoff fotodeveloper-dct-34f38f7/dct/mcp/server.py :1141
  • consume_handoff fotodeveloper-dct-34f38f7/dct/mcp/server.py :1163
  • delete_handoff fotodeveloper-dct-34f38f7/dct/mcp/server.py :1186
  • update_handoff fotodeveloper-dct-34f38f7/dct/mcp/server.py :1202
  • get_context_snapshot fotodeveloper-dct-34f38f7/dct/mcp/server.py :1260
  • pickup_work fotodeveloper-dct-34f38f7/dct/mcp/server.py :1320
  • handoff_work fotodeveloper-dct-34f38f7/dct/mcp/server.py :1413
  • create_plan fotodeveloper-dct-34f38f7/dct/mcp/server.py :1508
  • list_plans fotodeveloper-dct-34f38f7/dct/mcp/server.py :1551
  • get_plan fotodeveloper-dct-34f38f7/dct/mcp/server.py :1586
  • add_plan_section fotodeveloper-dct-34f38f7/dct/mcp/server.py :1598
  • list_plan_sections fotodeveloper-dct-34f38f7/dct/mcp/server.py :1650
  • complete_plan_checkpoint fotodeveloper-dct-34f38f7/dct/mcp/server.py :1683
  • reject_plan_checkpoint fotodeveloper-dct-34f38f7/dct/mcp/server.py :1697
  • promote_section_to_item fotodeveloper-dct-34f38f7/dct/mcp/server.py :1711
  • promote_checkpoint_to_item fotodeveloper-dct-34f38f7/dct/mcp/server.py :1745
  • promote_section_to_sprint fotodeveloper-dct-34f38f7/dct/mcp/server.py :1779
  • create_sprint fotodeveloper-dct-34f38f7/dct/mcp/server.py :1820
  • update_sprint fotodeveloper-dct-34f38f7/dct/mcp/server.py :1866
  • list_sprints fotodeveloper-dct-34f38f7/dct/mcp/server.py :1931
  • assign_item_to_sprint fotodeveloper-dct-34f38f7/dct/mcp/server.py :1965
  • remove_item_from_sprint fotodeveloper-dct-34f38f7/dct/mcp/server.py :1981
  • list_items_in_sprint fotodeveloper-dct-34f38f7/dct/mcp/server.py :1995
  • add_item_to_current_sprint fotodeveloper-dct-34f38f7/dct/mcp/server.py :2015
  • remove_item_from_current_sprint fotodeveloper-dct-34f38f7/dct/mcp/server.py :2030
  • create_decision fotodeveloper-dct-34f38f7/dct/mcp/server.py :2046
  • list_decisions fotodeveloper-dct-34f38f7/dct/mcp/server.py :2107
  • update_decision fotodeveloper-dct-34f38f7/dct/mcp/server.py :2141
  • supersede_decision fotodeveloper-dct-34f38f7/dct/mcp/server.py :2197
  • ingest_plan_file fotodeveloper-dct-34f38f7/dct/mcp/server.py :2221

declared dependencies 9

  • mcp@>=2,<3
  • sqlalchemy@>=2.0
  • python-ulid@>=2.0
  • platformdirs@>=4.9.6; sys_platform ==
  • psycopg@*
  • flask@>=3.0
  • markdown@>=3.5
  • pytest@*
  • pytest-cov@*