- CI: npm auth — restore
registry-urlandNODE_AUTH_TOKENviaNPM_TOKENsecret;--provenancehandles attestation only, not authentication
- CI: remove registry-url from setup-node —
registry-urlwrites an.npmrcexpectingNODE_AUTH_TOKENwhich conflicts with OIDC Trusted Publishing; removing it lets--provenancehandle auth correctly
- CI: npm auth — add
NODE_AUTH_TOKENto publish step so the registry accepts theNPM_TOKENsecret
- CI: npm self-update removed —
npm install -g npm@latestwas corrupting the npm installation in the GitHub Actions hostedtoolcache; Node 22 ships with npm 10+ which already supports--provenance
- Smart git hooks detection —
ck installdetects existing hooks managers (Husky, Lefthook, simple-git-hooks, existingcore.hooksPath, scripts in.git/hooks/) and suggests integration instead of overriding ck install --force— regenerate all files including user-customized standardsck update --force— also regenerate user-owned files (standards, glossary)/squadstandalone mode — if.contextkit/isn't set up,/squadoffers to create just.contextkit/squad/so the pipeline works without a fullck install; never creates.squad/in the project root
ck installsmart reinstall — skips user-owned standards files on reinstall; prints skip message with--forcehintck updatenon-destructive — never overwrites user-owned files (glossary.md, standards); preserved files logged clearlyck claude/ck cursorversion-aware — skip regeneration when integration is already up to date; regenerate when version mismatches or files are missingck analyzetech stack fix — no longer generates JS/TS standards for Go, Python, Rust, Java, and other non-JS projects- Gitignore taxonomy —
addContextKitGitignoreEntrieswrites 6 targeted runtime-state entries under a descriptive header; detects and handles existing ignore-all.contextkit/*pattern gracefully; upgrades legacy# ContextKitheader /doc-archdynamic output — output filename derived from topic argument, PR title, or branch name (docs/<topic>.md); confirms filename when inferred, falls back todocs/architecture.md
- Squad pipeline: sequential task execution enforced —
/squad-autowrites each file to disk before moving to the next task - Testing standards: Testing Trophy levels —
testing.mdupdated with unit/integration/e2e decision table and change-driven test selection rules
- Skills format — Claude commands migrated to skills format with rich frontmatter; Cursor rules updated to match
ck installgitignore entries — adds.contextkit/squad/and.contextkit/squad-done-*/to.gitignoreon install
ck updatecursor paths — corrected path resolution for Cursor rules on update
.claude/commands/path bug — all generated slash command wrappers now reference correct.contextkit/commands/subdir paths (dev/,squad/,docs/,agents/)
- New slash command wrappers:
/agent-push-checklist,/context-budget,/standards-aware ck installnow appends.claude/settings.local.jsonto.gitignoreautomatically (no-op if file absent or entry already present)
ck gatescommand — gate configuration is managed directly via.contextkit/quality-gates.yml; editing the file is simpler and more transparent than a CLI wrapper
- Quality Gates:
formatscript gate — ifpackage.jsonhas aformatscript, runs it in write mode then blocks the push if any tracked files changed, with a remediation message (git add -A && git commit -m 'chore: format') - Quality Gates:
lintscript gate — ifpackage.jsonhas alintscript, runs it and blocks on non-zero exit - Both gates respect
quality-gates.yml(disable: [format]/disable: [lint]) ck install: quality tooling scaffold — when the pre-push hook is enabled on a Node.js project with noformat/lintscripts, prompts to scaffold a minimal prettier + eslint setup (adds scripts,.prettierrc,.prettierignore,eslint.config.js, and installs devDependencies using the detected package manager); default No; skipped in CI/non-interactive mode; respects existing configs
- ContextKit own tooling — added
prettier+eslint(flat config) as devDependencies;npm run formatandnpm run lintscripts now active so the gates fire on ContextKit development too; initial format pass applied to all source files
analyze.js—const hasBackendreassigned in loop; changed tolet(surfaced by eslint)install.js— two useless escape sequences in shell template literal (\$@→$@,\$(→$()
- Quality Gates: 3 new stacks — Kotlin (ktlint + Gradle test), Swift (SwiftLint + swift test), .NET/C# (dotnet build + dotnet test)
- Quality Gates: config file —
.contextkit/quality-gates.ymlwithdisable:list lets you opt out of specific gates without editing hook code (e.g.disable: [eslint, prettier]) - Quality Gates: per-gate timing — each gate shows elapsed time (
✓ 2s) after completion - Quality Gates:
DRY_RUN=1mode — setDRY_RUN=1 git pushto preview which gates would run without executing them; exits 0 - Quality Gates: monorepo support — npm/pnpm workspace projects scope gates to affected packages when all push changes are inside workspace package directories
- Quality Gates: docs — failure banner callout with real output example; commit-msg section adds auto-skip note, 10-char minimum,
improveexample; Node.js table row adds e2e + package.json note; workflow block replaced with numbered list; "skipped silently" used consistently; Troubleshooting section added; hooks-copied-at-install clarified; Kotlin/Swift/.NET rows added to framework table
/doc-archcommand — generatesdocs/architecture.md(Level 1: system boundaries, key flows, Mermaid diagrams). Stack-aware; can target current branch or a PR number./doc-featurecommand — generatesdocs/features/<name>.md(Level 2: feature scope, components, data flows, sequence diagrams). Accepts name, directory, or PR number./doc-componentcommand — generates a colocated<name>.mdnext to a file (Level 3: props/API, usage example, edge cases). Accepts file path or directory.- Docs: md-first page — commands section with 3-level hierarchy table, per-command subsections, stack-awareness note, when-to-use-which table, squad integration note
- Docs: slash-commands page — doc-arch, doc-feature, doc-component entries added
- CI Squad — label any GitHub issue
squad-readyto trigger a full squad pipeline in GitHub Actions (PO → Architect → Dev → Test → Review → Doc) and open a draft PR automatically. No local setup required. ck installCI Squad prompt — opt-in prompt during install downloadssquad-issue.ymlto.github/workflows/and recordssquad_ci_workflow: truein configck updateCI Squad sync — re-downloadssquad-issue.ymlonck updatewhensquad_ci_workflowflag is setsquad-ci.mdcommand — new command distributed via install/update; instructs Claude Code CLI to run the full pipeline non-interactively in CI mode. On clarify: posts a GitHub comment and exits 0. On completion: writesci-result.mdfor the PR body.templates/github-actions/squad-issue.yml— new GitHub Actions workflow template with branch creation, clarify comment flow, concurrency guard, and draft PR creation- Docs: CI Squad page — new website page covering setup, how it works, writing good issues, clarify flow, and behaviour table
- Website: commit types — quality-gates page was showing stale
styletype; updated toimprove(matches CLI and standards)
commit-msghook — length check now tests the subject line only (head -n1), not the full message including body. A short subject with a long body previously passed incorrectly.commit-msghook — length check now runs before the format check (was unreachable dead code — any message passing the format regex was already >10 chars).pre-pushhook — fixed variable-width content inside box borders;Project typeand success summary lines moved outside the box to prevent broken border alignment.
pre-pushhook — ERR trap prints a clear❌ Quality Gates FAILED — push blocked.banner when any gate fails, replacing silent exit.
commit-msghook — removedstylefrom allowed commit types (not used in this project; was inconsistent with documented types inworkflows.mdandai-guidelines.md).- README — commit types list updated to remove
style, matching the hook and standards files.
ck aistale reference — removed leftoverck ai <cmd>line from post-install Quick Reference output (command was removed in 0.13.0)- Install "In CLI" example — replaced
ck ai "..."example with generic slash command guidance
- OpenCode auto-detection —
ck installnow detects theopencodebinary in PATH and suggests the OpenCode integration automatically, consistent with howclaude,codex, andgeminiCLI tools are detected
/squadvague task handling — PO now pushes back with up to 5 clarifying questions when a task description is too ambiguous to spec. Setsstatus: po-clarify, writes questions to the handoff, and pauses the pipeline. Running/squadagain (no args) with answers resumes and writes the full spec./squadClarification Mode — split into two paths: kickoff clarification (questions in PO Spec block → write spec, advance to architect) and downstream clarification (questions from Architect/Reviewer → existing behavior)
ck ai— removed AI chat fallback command; users interact via Cursor, Claude Code, OpenCode, etc.ck dashboard— removed observability dashboard commandck pull/ck publish— removed local registry commands (no shared registry was implemented; feature deferred)- Unknown commands no longer silently forward to AI; now print an error and exit with code 1
format_versionfield in.contextkit/config.yml— written asformat_version: 1onck install- Migration runner (
lib/utils/migrations.js) —ck updatedetects outdated format versions and migrates automatically; v0→v1 migration bootstraps the field on existing pre-1.0.0 installs
- Node.js engine requirement bumped to
>=18.0.0(Node 14/16 are EOL) improveadded as a valid commit type in README (was already inworkflows.mdand thecommit-msghook)- Docs site — removed observability/dashboard sections from Commands and Enterprise pages; quick-start and docs README now require Node 18.x
commit-msghook — merge commits (Merge branch ...), revert commits, fixup, and squash commits are now skipped automatically instead of being rejected with a conventional format error.commit-msghook — addedimproveas a valid commit type (was already listed in ContextKit's own standards but missing from the hook regex).
- Architect split signal — the Architect now evaluates task complexity before writing the plan. If a task is too large (>~7 files, multiple independent concerns, or significant wasted effort risk), it writes a
### Recommended Splitwith proposed sub-tasks and setsstatus: po-clarify. The PO then approves the split (running/squadas a batch) or dismisses it and proceeds as-is — no code is written until the PO decides.
/squadClarification Mode — detects### Recommended Splitin the Architect Plan block and guides the PO through the two response options (approve split or proceed as-is), separate from the standard spec Q&A flow./squad-autopo-clarifymessage — updated to mention the split recommendation scenario so users understand what to expect when running/squad.
/squad-docphase — new final pipeline step that runs after review passes. Creates companion.mdfiles for every new code file and updates existing ones for significant modifications. Enforces MD-first as a quality gate rather than an afterthought.commands/squad-doc.md— new command file distributed viack installandck update./squad-docslash command — available in Claude Code afterck claude.
- Squad pipeline flow — now
architect → dev → test → review → doc → done. Review PASS routes todocstatus instead of directly todone. squad-auto— runs the Doc phase inline after each task's review passes.squad-auto-parallel— runs a sequential Doc pass after all parallel agents complete.- Handoff template — includes new
## 7. Docsection.
- Passive update notifications —
cknow checks npm for newer versions of@nolrm/contextkitonce per 24 hours and prints a non-blocking one-liner after any command if an update is available. Suppressed automatically in CI environments. - ContextKit version stamp in CLAUDE.md — the generated
CLAUDE.mdnow includes the installed version (Version: X.Y.Z) so AI tools can report it and check for updates when running/ck. /ckupdate check step — the health-check command now runsnpm view @nolrm/contextkit version, compares to the installed version instatus.json, and adds an update row to the status table.
health-check.mdnow downloaded from GitHub (like all other command files) instead of being written inline at install time. Existing users get the updated file viack update.
- Banner art — replaced "CK" initials ASCII art with full "ContextKit" slant-style logo on
ck installandck update.
/squad-reset— new slash command to clear.contextkit/squad/and start fresh. Reports what was removed and flags any in-progress tasks before deleting.
/squadmixed-state handling — instead of hard-stopping when bothhandoff.mdandmanifest.mdexist,/squadnow offers to reset inline and continue with the provided task. Falls back to instructing/squad-resetif no task was given or the user declines.
/squad-peer-reviewremoved from the pipeline. Existing installs have the file deleted automatically onck update.
ck updatelegacy cleanup — removes.contextkit/commands/squad-peer-review.mdon update.
/squad-runrenamed to/squad-auto,/squad-run-agentsrenamed to/squad-auto-parallel— "auto" unambiguously signals hands-free execution; "run" was ambiguous (run what? run a step?). This is a breaking rename for muscle memory — existing users should note the new names.- Squad command menu labels — added contextual suffixes so the slash-command dropdown is self-explanatory without guessing:
(start here),(recommended),(manual step 1/4)through(manual step 4/4). - Post-kickoff message —
/squadnow recommends/squad-autoas the primary next step (hands-free) and lists manual steps as a secondary option. Previously it only mentioned/squad-architect.
/squad-runno longer exists. Use/squad-autoinstead./squad-run-agentsno longer exists. Use/squad-auto-parallelinstead.
.contextkit/README.md— generated onck install. Explains what the directory is, includes the install command (npm install -g @nolrm/contextkit) and npm link so any developer who encounters the folder knows what manages it._sourceblock in.contextkit/config.yml— machine-readable attribution written at install time withtool,version, andnpmfields.- Updated attribution marker — the
<!-- Generated by ContextKit -->comment in all bridge files now includes the npm package name and link:<!-- Generated by ContextKit (@nolrm/contextkit) https://www.npmjs.com/package/@nolrm/contextkit -->. Backward-compatible: existing installs with the old short marker are detected and upgraded on next write.
/squad-batchremoved — merged into/squad. Pass one task for single-task mode, two or more for batch mode./squadauto-detects and routes accordingly.commands/squad.md,.contextkit/commands/squad.md— full rewrite combining single-task, batch, append, and clarification flows into one command. Adds mixed-state detection,poin-progress warning before overwrite,donearchiving for both single and batch, and standardised handoff template with Visual Assets and User Clarifications sections.lib/integrations/claude-integration.js— removed.claude/commands/squad-batch.mdfrom generated files; added to legacy cleanup list so existing installs remove the stale file automatically.lib/integrations/cursor-integration.js— same as above for.cursor/prompts/squad-batch.md.lib/commands/install.js,lib/commands/update.js— removedsquad-batch.mddownload.README.md,contextkit-docs— updated all batch flow examples to use/squad.
/squad-batchno longer exists as a command. Use/squad "task 1" "task 2" ...instead.
commands/squad.md,.contextkit/commands/squad.md— PO agent now checks for screenshots or images the user attached to the/squadinvocation. If present, each image is saved to.contextkit/squad/assets/and listed with a one-line description under the new optional### Visual Assetssection in the handoff. If no images are provided the section is left empty and the pipeline continues unchanged.commands/squad-architect.md,.contextkit/commands/squad-architect.md— Architect now reads any### Visual Assetsfile paths from the PO Spec before writing the plan.commands/squad-dev.md,.contextkit/commands/squad-dev.md— Dev now reads any### Visual Assetsfile paths from the PO Spec before implementing.README.md— Added Visual Assets section to the Squad Workflow docs and updated the PO role description.
lib/commands/install.js— When a user declines reinstall, the CLI now shows a hint: runck updateto get the latest command and squad files without overwriting customized standards.
commands/squad-batch.md— Batch kickoff now detects whether a manifest already exists. Fresh run creates a new manifest and handoff files as before. If a manifest exists, append mode activates: new tasks are numbered from where the existing batch left off, the manifesttotal:is updated, and PO specs are written for new tasks only — existing handoffs are never re-processed. Run/squad-runafter to continue the full pipeline.
- Standards template —
standards/glossary.mdis now a neutral project-agnostic template ([YOUR_DOMAIN]/[term]placeholders) instead of shipping with e-commerce/accounting examples that don't apply to most projects. commands/analyze.md— Analysis now includes a Term & Glossary Detection step: AI scans the codebase for domain-specific vocabulary and appends discovered terms toglossary.md. Added Update Strategy rule: placeholder files are replaced, files with existing custom content are improved and augmented — never overwritten. Addedai-guidelines.md,workflows.md, andglossary.mdto the list of files updated during analysis.standards/README.md— Quick Reference section is now stack-neutral (removed React/TypeScript-specific "functional components" and "atomic design" advice). Addedworkflows.mdto the Standards file list. Updated glossary description to "Project terminology and domain glossary".- Root
standards/reference files — Added clear banner tocode-style.md,testing.md,architecture.md,ai-guidelines.md, andworkflows.mdclarifying they are reference examples (not auto-installed) showing whatck analyzecan generate. - Docs & README — Updated glossary description from e-commerce-specific examples to generic domain terminology. Updated quick-start and platform-examples usage snippets to reflect that glossary terms come from the user's own project.
- README — Add direct link to How context works docs page.
- Docs site — Footer copyright year 2026; sitemap and docs README include How Context Works page.
- Docs — Clarify that install is project-level only (README, CLI description, docs site quick-start and commands). No global mode; standards live in git with the project.
- Docs site — New Squad Workflow page (
/docs/squad) with pipeline roles, single-task and batch flows, and feedback loop. Slash-commands page now links to it instead of listing all squad commands inline. - Docs site — New How Context Works page (
/docs/how-context-works) explaining the two-layer architecture (bridge file + scoped rules).
- Install — Warn when running
ck installwith no.gitorpackage.jsonin the current directory (reminder to run from inside a project).
- Tests — Unknown-command CLI test now accepts "ContextKit not initialized" when not installed (CI), so it passes in both CI and local.
- CLI — Register
opencodecommand sock opencodeworks (integration existed; command was documented but not registered). - Tests — CLI integration tests for
statusand unknown-command now pass in both CI (no config) and local (full install).
- Pre-push quality gates — TypeScript, ESLint, and Prettier gates now only run when listed as dependencies in
package.json, not when they appear in keywords. Fixes false positives for projects that mention these tools in keywords but don't use them.
- OpenCode integration — New platform support. Run
ck opencodeto createAGENTS.md(auto-loaded by OpenCode). Same bridge file pattern as Codex.
/squad-run-agents— New Claude Code-only command that runs the squad batch pipeline using parallel subagents. Spawns one architect agent per task simultaneously (Phase 1), then one full dev→test→review pipeline agent per task simultaneously (Phase 2). Significantly faster than/squad-runfor multi-task batches.- ESLint accessibility linting for
contextkit-docs— installedeslint-plugin-test-a11y-jswith theflat/reactpreset and@typescript-eslint/parser. Fixed 30 violations across 11 files (heading order, table structure, button/form/link labels, keyboard accessibility).
.gitignoredocs artifact paths corrected fromvibe-kit-docs/→contextkit-docs/
- Interactive platform picker —
ck installnow prompts "Which AI tool?" instead of auto-detecting all tools. Supports a positional argument (ck install claude) to skip the prompt.--non-interactiveinstalls base files only. Platform-specific commands (ck claude, etc.) are unchanged.
/ckHealth Check — slash command to check project health from inside any AI tool- Detects whether ContextKit is installed
- Checks if standards files are still skeletons (wasting context tokens)
- Checks if product files still have placeholder content
- Lists active platform integrations
- Reports a status table with recommended next steps
- Universal command file
.contextkit/commands/health-check.mdcreated during install - Platform wrappers:
.claude/commands/ck.mdand.cursor/prompts/ck.md
- Claude @imports — CLAUDE.md now uses
@pathsyntax to auto-load standards into context- Standards, product files, and corrections.md are imported automatically every session
- Eliminates manual
Readtool calls — saves tokens per session by avoiding repeated file reads - First-time use triggers a one-time approval dialog in Claude Code
.claude/rules/files simplified to reference auto-loaded standards instead of duplicating paths- Base integration (
getStandardsBlock()) unchanged —@imports are Claude-specific
- Upfront: slightly higher base context (standards content loaded immediately)
- Per-session: lower total usage — no Read tool calls needed for standards files
- Net effect: fewer tokens overall for typical sessions, plus guaranteed consistency
- Squad Workflow — multi-agent pipeline with 7 slash commands
/squad— kick off a task as Product Owner (writes PO spec)/squad-architect— design the technical plan from the PO spec/squad-dev— implement code following the architect plan/squad-test— write and run tests against acceptance criteria/squad-review— review the full pipeline and give a PASS/NEEDS-WORK verdict/squad-batch— kick off multiple tasks at once (batch PO specs)/squad-run— auto-run the remaining pipeline for batch tasks
- Role-to-role feedback loop: downstream roles can raise questions for upstream roles via
*-clarifystatuses - Shared handoff file (
.contextkit/squad/handoff.md) tracks specs, plans, implementation, tests, and review
- Added squad commands to README slash commands table and new Squad Workflow section
- Added squad commands and Squad Workflow section to docs site slash commands page
- Slash Commands for Claude Code (
.claude/commands/) and Cursor (.cursor/prompts/)/analyze— scan codebase and generate standards content/review— code review with checklist/fix— diagnose and fix bugs/refactor— refactor code with safety checks/test— generate comprehensive tests/doc— add documentation
- Both platforms delegate to universal
.contextkit/commands/files - New command files:
review.md,fix.md,refactor.md
- Git hooks now use
git config core.hooksPath .contextkit/hooksinstead of writing to.git/hooks/ - Auto-injects
preparescript intopackage.jsonso hooks work for all devs afternpm install - Hook files renamed from
.shextension to match git conventions (pre-push,commit-msg) - All existing commands rewritten to be framework-agnostic (no React assumptions)
- Legacy
.git/hooks/ContextKit wrappers automatically cleaned up
- Gradle quality gate now checks for
gradlewand verifieschecktask exists - Go and Maven gates skip when no source files exist
- Quality Gates: Pre-push hooks now auto-detect your project framework and run the right checks automatically
- Node.js: TypeScript, ESLint, Prettier, build, test (auto-detects npm/yarn/pnpm/bun)
- Python: ruff/flake8, mypy, black/ruff format, pytest
- Rust: cargo check, clippy, cargo test
- Go: go vet, golangci-lint, go test
- PHP: PHPStan, PHPUnit
- Ruby: RuboCop, RSpec/rake test
- Java: Maven verify / Gradle check
- Generic: informational message for unrecognized projects
- All gates skip gracefully when tools aren't installed
- Integration test suite for framework detection and hook installation
- Git hooks now use native approach instead of Husky
- Hooks work in any git repo — no longer requires package.json or Node.js
ck installhooks prompt now checks for.git/instead ofpackage.json- Install prompt updated with "Quality Gates" branding
- Husky dependency — no longer installed or required
installHusky(),checkHuskyInstalled(),initializeHusky(),checkCommandExists()methods from GitHooksManager
- Pre-push script grep patterns now match script keys (
"test":) instead of any occurrence of the word in package.json
- Existing
.husky/directories with ContextKit markers are automatically cleaned up on nextck install - Users can manually run
npm uninstall huskyto remove the dependency