PactKit

Format follows Keep a Changelog.

2.9.12 — 2026-04-02

Added

  • Copilot deployer adapterpactkit-copilot adapter package registered via entry_points. pactkit update --format copilot deploys skills, commands, agents, and copilot-instructions.md to .github/.
  • OCP-compliant rules header dispatch_build_command_rules_header() dispatches on profile.rules_import_style instead of hardcoded profile name checks.
  • Multi-stack auto-detectionpactkit init auto-detects multiple stacks and writes stack: [python, typescript] list syntax to pactkit.yaml.
  • Two-tier module graphvisualize --mode module generates dimension-based subgraphs.
  • Prompt template sync — Canonical prompt templates rendered consistently across all deployer formats.

Fixed

  • OpenCode rules_import_style — Corrected from "instructions" to "inline" to match actual behavior.

2.9.11 — 2026-04-01

Fixed

  • Rules template variables_deploy_rules() now renders {PROJECT_CONFIG_DIR} and other template variables via _render_prompt(). Previously rules were deployed with raw template strings in Codex/OpenCode.
  • Copilot agent YAML corruption — Agent tools: field was iterated char-by-char ([R, e, a, d, ...][Read, Write, ...]).
  • Copilot double annotation(terminal only) (terminal only) reduced to single annotation.
  • Skill CLI refs — All SKILL.md files now pass through _replace_slash_commands().

2.9.10 — 2026-04-01

Fixed

  • Skill script __future__ importload_script() now hoists from __future__ import annotations above _SHARED_HEADER, fixing SyntaxError in deployed spec_linter.py.
  • Lessons table auto-repairappend_lesson() now calls _repair_table_structure() before appending, fixing: missing header, wrong header format, data rows before header.

2.9.9 — 2026-04-01

Added

  • GitHub Copilot adapter support — New copilot FormatProfile. pactkit init --format copilot deploys to project .github/ directory.
  • Dynamic --format CLI choicesinit, update, upgrade commands derive choices from VALID_FORMATS instead of hardcoded list.

Fixed

  • Excluded command strippingstrip_excluded_command_references() strips /project-sprint references from all rendered prompts for formats that exclude it.

2.9.4 — 2026-03-31

Fixed

  • Init playbook DIP violation — Eliminated DETECTED_ENV runtime IDE detection; all hardcoded paths replaced with template variables.
  • Full DIP audit — Fixed hardcoded IDE paths in doctor skill, core-protocol rule, and done command.
  • tree-sitter promoted to core dependency — No longer optional; CI install updated.
  • --focus scan optimization_scan_files now scans only the focused subdirectory, not the full project root.
  • SCAN_EXCLUDES expanded — From 13 to 30+ entries covering Go, Java, Node, IDE, and VCS directories.

2.9.3 — 2026-03-31

Added

  • Multi-language call chain fix (STORY-slim-069) — Dispatch hint comment parsing (pactkit-trace: dispatches_to) and inheritance edge linking extended from Python-only to Go (struct embedding), Java (extends/implements), and TypeScript (class extends) tree-sitter analyzers.
  • CLI visualize args exposed (HOTFIX-slim-070) — --entry, --focus, --reverse, --depth, --max-nodes now reachable from pactkit visualize CLI.

Fixed

  • 4 call chain断链 (STORY-slim-068) — dict.update scan collision, dynamic dispatch hints, abstract method orphan nodes, cross-package stub edges.
  • Nested subgraph call graph (STORY-slim-067) — Fan-in/fan-out analysis with subgraph grouping.
  • Edge dedup + cycle fix (HOTFIX-slim-069) — ×N labels for duplicate edges, false positive cycle detection eliminated.

2.9.2 — 2026-03-30

Fixed

  • FormatProfile.excluded_commandsproject-sprint excluded for OpenCode/Codex (requires subagent team, Claude Code only). Doctor check_config_drift now respects format-level exclusions.
  • Redundant pactkit.yaml component lists — Removed explicit agents/commands/skills/rules lists from .opencode/pactkit.yaml (absence = deploy all).
  • Orphaned spec cleanup — Removed 7 pre-developer-prefix spec files that were already archived.

2.9.1 — 2026-03-30

Added

  • Topology-aware trace — ApiCallParser (tree-sitter-typescript) and AgentParser (LangGraph/YAML/MCP) for multi-topology code tracing. Plan/Act phases now include topology gate.

Fixed

  • Monorepo subdirectory detection — TopologyParser.detect() now scans immediate subdirectories, fixing false negatives for monorepo layouts.
  • Doctor false drift warningscheck_config_drift() now searches global deploy directories instead of only project-local paths.
  • Canonical lessons.md header — Init enforces | Date | Lesson | Context | table header, preventing AI-invented column names.

2.9.0 — 2026-03-28

Added

  • pactkit init deploys all IDEs by default--format all is now the CLI default, deploying Claude Code + OpenCode + Codex configs in one shot. No need to specify --format per IDE.

Fixed

  • Entry_point deployer circular import — Lazy-load entry_point deployers to fix ValueError when running pactkit init via pipx.

2.8.0 — 2026-03-27

Added

  • 3-IDE Default Installpip install pactkit now installs all three IDE adapters (Claude Code + OpenCode + Codex) out of the box.

Fixed

  • OpenCode Command Architecture — Reverted OpenCode from skills-only back to commands/ + skills/ dual architecture. OpenCode auto-discovers commands from commands/*.md, while embedded skills in skills/ are loaded by AI agent on demand.
  • Spec Version Confusion/project-plan no longer reads version from pactkit.yaml (toolkit version). Now explicitly reads from project manifest (pyproject.toml, package.json).

Changed

  • Cross-IDE Command Architecture:
    • Claude Code: skills-only (skills/project-*/SKILL.md), prefix /
    • OpenCode: commands + skills (commands/project-*.md + skills/pactkit-*/SKILL.md), prefix /
    • Codex: skills-only (skills/project-*/SKILL.md), prefix $

2.7.0 — 2026-03-27

Added

  • Commands → Skills Migration (STORY-slim-063) — 11 PDCA commands now deploy as skills/{name}/SKILL.md subdirectories for Claude Code format. VALID_SKILLS expanded from 10 to 21 entries.
  • Legacy Command Cleanup — Auto-removes old project-*.md from commands/ on upgrade.
  • Codex FormatProfile (STORY-slim-060) — Re-added codex profile to core for thin adapter pattern. pactkit-codex published to PyPI.
  • 3-Package Coordinated Release — First simultaneous release across pactkit, pactkit-opencode, and pactkit-codex.

Fixed

  • board.py update_task (HOTFIX-slim-061) — Recognizes bullet-format Done entries.
  • visualize --lazy focus (HOTFIX-slim-062) — Removed hardcoded focus refresh; added stem matching.

Changed

  • Unified deploy summary shows Skills (embedded + commands) count.
  • Cross-format isolation: OpenCode and Codex unaffected by skills migration.

2.6.0 — 2026-03-26

Added

  • DeployerProtocol & DeployerBase (STORY-slim-057) — Extracted deployer interface and shared base class with registry pattern for adapter-based plugin architecture.
  • pactkit-opencode Adapter Package (STORY-slim-058) — Extracted all 8 OpenCode-specific functions into standalone package with entry_points-based auto-registration.
  • Entry Point Auto-Discovery — Scans pactkit.deployers entry_point group at import time for zero-config adapter registration.

Removed

  • Codex Profile (STORY-slim-059) — Removed dead codex FormatProfile and all references. VALID_FORMATS auto-shrinks via FORMAT_PROFILES.keys().
  • OpenCode Functions from Core — 8 functions (~300 lines) moved to pactkit-opencode adapter. deployer.py reduced -17%.

Changed

  • deploy() dispatches via registry instead of if/elif chain. New formats only need register_deployer().

2.5.0 — 2026-03-26

Added

  • E2E CLI Coverage 100% — 60 subprocess-based E2E tests covering all 25 CLI subcommands
  • python -m pactkit — Package now supports module invocation as alternative entry point

Fixed

  • Mermaid Quote Injection — File/function names containing " no longer break .mmd graph rendering
  • O(N×E) Callee Resolution_resolve_callee() uses pre-built suffix index for O(1) lookup
  • Module Index Collision — Same-name files in different directories no longer cause silent node loss
  • Focus Substring False Positives--focus auth.py no longer matches oauth.py
  • BFS O(N²) Pop — All BFS sites now use deque.popleft() instead of list.pop(0)
  • Non-Atomic Writespactkit.yaml, .mmd files, and atomic_write() all use tmp+rename pattern
  • Deployer Encoding — 3 bare read_text() calls now specify encoding='utf-8'
  • Large File OOMMAX_FILE_BYTES=1MB guard prevents OOM on auto-generated mega-files
  • Sprint Redundant Operations — Eliminated duplicate visualize/clean/context runs

2.4.1 — 2026-03-26

Fixed

  • CI Template Overridepactkit update no longer reverts custom ci.install_cmd in pactkit.yaml
  • Board ID Validation — Now supports developer-prefixed IDs (HOTFIX-slim-052, STORY-alice-001)

Added

  • Board move_story Command — Move stories between board sections via CLI
  • Automated PyPI Publish — Tag-triggered CI publishes to PyPI via trusted publisher (OIDC)

Changed

  • Closed-Source Migration — Source repo now private; public entry point at pactkit-public

2.4.0 — 2026-03-25

Added

  • Multi-Architecture Topology Analysispactkit visualize now understands 3 project topologies beyond code structure:
    • PDCA topology — Plan→Act→Check→Done sequence edges in workflow graphs
    • Service topology — Parses docker-compose.yml, openapi.yaml, *.proto for service dependency graphs
    • Frontend topology — Parses Next.js (App/Pages Router), Vue Router for page→component→hook→store chains
    • Cross-topology impact — Regression analysis works across all topology types
    • Unified layered graph — Merges code + topology dimensions into a single visualization

Fixed

  • Topology auto-detection reliability improvements
  • CI dependency configuration for multilang test coverage
  • Spec/PRD cross-reference consistency (4 issues)

2.3.0 — 2026-03-22

Added

  • 25 Deterministic CLI Subcommands — Core operations now run as Python code, not prompts: clean, regression, context, lint, test-map, coverage-gate, doctor, spec-lint, spec-status, and more
  • Coverage Gatepactkit coverage-gate enforces 3-tier thresholds (≥80% PASS, 50-79% WARN, <50% BLOCK)
  • Auto Version Syncpactkit update --if-needed skips redeploy when already current
  • E2E Testing Framework — Config-driven E2E strategy in pactkit.yaml
  • Spec Linter Enhancements — W007 Req-AC coverage, W008 placeholder detection, E007 per-subsection validation

Fixed

  • Plan phase stall on large Spec generation (split into sub-steps)
  • Explore subagent unbounded search (bounded delegation pattern)
  • 25+ cross-flow integrity gaps across CLI and prompt references

2.2.0 — 2026-03-20

Added

  • Context-Aware Rule Loading — Each command loads only the rules it needs, reducing token usage by 20-83%
  • Stack-Aware CI Pipeline — Supports Python, Node.js, Go, and Java with correct setup and test runners
  • GitHub Enterprise (GHE) Supportci.github_host and ci.actions_ref configuration

2.1.0 — 2026-03-17

Added

  • Multi-Format Deployment — Adding a new AI tool format requires only one registry entry; all downstream code auto-adapts
  • Template Variables — 48 hardcoded paths replaced with named placeholders resolved at deploy time
  • Document Schema Registrypactkit schema [type] CLI for document structure rule discovery
  • Lazy Rule Loading — Per-turn system prompt overhead reduced by 62%

Fixed

  • /project-init environment detection improvements
  • Config merge preserves user entries (no more overwrites)

Earlier Releases

  • 1.5.0 — PDCA Quality Gates, Impact-Based Regression, Done/Release/PR command split, Community Standards
  • 1.4.0 — Spec Linter (14 rules), Active Clarify Gate, Pre-Act Consistency Check, Auto-PR
  • 1.3.0 — CI/CD Pipeline Generation, Issue Tracker Integration, Hook Templates, Doctor Diagnostics
  • 1.0.0 — Initial public release. 9 agents, 13 commands, 3 skills, 6 constitution rules

On this page