Files
msd-core/AGENTS.md
Cristian Uibar 05316369ae fix(3583): normalize retired colon-form commands in generated Claude/Qwen/Hermes SKILL.md bodies (#3629)
* Add first-class grok runtime support (maps to ~/.agents); wire installer, runtime-homes.cjs and sync-skills; update Grok Build engine in local ~/.agents to latest; record session progress in discussion doc

* Normalize gsd colon references to hyphen in generated Claude SKILL.md bodies using the shared transformer. Fixes #3583.

* Refine #3583 implementation after review: cache command names, improve tests, clean up comments

* Harden gsd colon-to-hyphen transformer with bidirectional word boundaries and body-only regression guard

* Track quick-wins batch status and local session notes for #3583/#3579 handoff

* Port installer robustness (hoist copyLibDir + selective Codex hooks) from 3579 to make Codex tests pass on this branch. Fixes ReferenceError and prevents extra hook pollution in Codex installs.

* Restore #3583 transformer wiring and Codex .sh GSD_VERSION branch lost in 50ff8f17 port

Commit 50ff8f17 ('Port installer robustness from #3579') accidentally reverted:
- the top-level require of transformContentToHyphen/readGsdCommandNames
- the body normalization inside convertClaudeCommandToClaudeSkill
- the Codex hook loop's .sh branch with {{GSD_VERSION}} substitution

These were the actual #3583 fix and the Codex half of the #2136 invariant.
Failing tests fixed: bug-2808-skill-hyphen-name, claude-skills-migration #3583
case, bug-2136 Codex .sh substitution.

* Exempt 'sync-skills' slug from docs-parity check (skill dir name in path references)

gsd-sync-skills is an installed Claude skill name and a workflow file but
not a registered slash command. The docs-parity regex catches /gsd-sync-skills
from filesystem path references like ~/.agents/skills/gsd-sync-skills/ in
docs/discussions/grok-build-support-2026-05.md.

Adding to INTERNAL_COMPONENT_SLUGS matches the existing exemption pattern
for 'statusline', 'workspaces', 'graphify-update', etc.

* Restrict hooks/lib/ install to hook-enabled runtimes and managed allowlist

Codex/Copilot/Cursor/Windsurf/Trae/Cline already skip the hooks block but were still copying hooks/lib/ helpers, contradicting the downstream Codex comment. Gate the call on the same runtime check and pass GSD_HOOK_LIB_FILES so install scope matches the uninstall/manifest scope.
2026-05-16 13:09:58 -04:00

3.0 KiB
Raw Blame History

Repository Guidelines

Active Discussions

For current work on Grok Build compatibility and multi-runtime synchronization across Grok Build, Claude Code, Gemini CLI, and Codex, see:

  • docs/discussions/grok-build-support-2026-05.md

Project Structure & Module Organization

This repository ships GSD as a Node.js CLI and SDK. Root package entry points live in bin/, scripts in scripts/, runtime hooks in hooks/, command definitions in commands/gsd/, and workflow/template content in get-shit-done/. Agent role files are in agents/; docs are in docs/; logos and terminal images are in assets/. Root tests are in tests/*.test.cjs. The TypeScript SDK is isolated under sdk/, with source and Vitest tests in sdk/src/.

Build, Test, and Development Commands

Use Node.js >=22.

  • npm install: install root dependencies.
  • npm test: builds the SDK first, then runs root node:test suites via scripts/run-tests.cjs.
  • npm run test:coverage: runs root tests with c8 and enforces 70% line coverage for included CommonJS library files.
  • npm run build:hooks: rebuilds generated hook artifacts.
  • npm run build:sdk: installs SDK dependencies and builds TypeScript.
  • cd sdk && npm test: runs SDK Vitest unit and integration projects.
  • cd sdk && npm run build: type-checks and emits sdk/dist/.

Coding Style & Naming Conventions

Match the existing style in the edited area. Root JavaScript is CommonJS, generally strict-mode, two-space indentation, semicolons, const/let, and node: imports for built-ins. SDK code is strict TypeScript using ESM/NodeNext. Keep command, workflow, and test filenames kebab-case, for example commands/gsd/plan-phase.md and tests/bug-2396-makefile-test-priority.test.cjs. Agent files use gsd-*.md. Avoid unrelated formatting and unnecessary dependencies.

Testing Guidelines

Root tests use Node’s built-in node:test and node:assert/strict; do not add Jest, Mocha, or Chai. Prefer helpers from tests/helpers.cjs for temporary projects, cleanup, and CLI execution. Name root tests *.test.cjs; run one with node --test tests/name.test.cjs. SDK tests use Vitest with *.test.ts for unit tests and *.integration.test.ts for integration tests.

Commit & Pull Request Guidelines

Recent history follows Conventional Commit prefixes such as fix:, feat:, and ci:, often with issue references: fix(#2623): resolve parent .planning root.... Keep commits scoped and descriptive.

Every PR must link an approved or confirmed issue with Closes #123, Fixes #123, or Resolves #123. Use the matching template in .github/PULL_REQUEST_TEMPLATE/. Include behavior changes, root cause when relevant, test evidence, affected platforms/runtimes, and update CHANGELOG.md or docs for user-facing changes.

Security & Configuration Tips

Do not commit secrets, local config, or generated worktree artifacts. Before release-facing changes, run the relevant scan scripts in scripts/, especially secret-scan.sh, base64-scan.sh, and prompt-injection-scan.sh.