mirror of https://github.com/garrytan/gstack.git
Universal insurance policy against upstream slash-command shadowing. The /checkpoint bug (Claude Code shipped /checkpoint as a /rewind alias, silently shadowing the gstack skill) cost us weeks of user confusion before we realized. This test is the "never again" check: enumerate every gstack skill name and cross-check against a per-host list of known built-in slash commands. Architecture: - KNOWN_BUILTINS per host. Currently Claude Code: 23 built-ins (checkpoint, rewind, compact, plan, cost, stats, context, usage, help, clear, quit, exit, agents, mcp, model, permissions, config, init, review, security-review, continue, bare, model). Sourced from docs + live skill-list dumps + claude --help output. - KNOWN_COLLISIONS_TOLERATED: skill names that DO collide but we've consciously decided to live with. Mandatory justification comment per entry. - GENERIC_VERB_WATCHLIST: advisory list of names at higher risk of future collision (save, load, run, deploy, start, stop, etc.). Prints a warning but doesn't fail. Tests (6 total, 26ms, free tier): 1. At least one skill discovered (enumerator sanity) 2. No duplicate skill names within gstack 3. No skill name collides with any claude-code built-in (with KNOWN_COLLISIONS_TOLERATED escape hatch) 4. KNOWN_COLLISIONS_TOLERATED entries are all still live collisions (prevents stale exceptions rotting after a rename) 5. The /checkpoint rename actually landed (checkpoint not in skills, context-save and context-restore are) 6. Advisory: generic-verb watchlist (informational only) Current real collisions: - /review — gstack pre-dates Claude Code's /review. Tolerated with written justification (track user confusion, rename to /diff-review if it bites). The rest of gstack is collision-free. Maintenance: when a host ships a new built-in, add the name to the host's KNOWN_BUILTINS list. If a gstack skill needs to coexist with a built-in, add an entry to KNOWN_COLLISIONS_TOLERATED with a written justification. Blind additions fail code review. TODO: add codex/kiro/opencode/slate/cursor/openclaw/hermes/factory/ gbrain built-in lists as we encounter collisions. Claude Code is the primary shadow risk (biggest audience, fastest release cadence). Note: bun's parser chokes on backticks inside block comments (spec- legal but regex-breaking in @oven/bun-parser). Workaround: avoid them. |
||
|---|---|---|
| .. | ||
| fixtures | ||
| helpers | ||
| analytics.test.ts | ||
| audit-compliance.test.ts | ||
| builder-profile.test.ts | ||
| codex-e2e.test.ts | ||
| codex-hardening.test.ts | ||
| context-save-hardening.test.ts | ||
| diff-scope.test.ts | ||
| explain-level-config.test.ts | ||
| gemini-e2e.test.ts | ||
| gen-skill-docs.test.ts | ||
| global-discover.test.ts | ||
| gstack-developer-profile.test.ts | ||
| gstack-question-log.test.ts | ||
| gstack-question-preference.test.ts | ||
| hook-scripts.test.ts | ||
| host-config.test.ts | ||
| jargon-list.test.ts | ||
| learnings-injection.test.ts | ||
| learnings.test.ts | ||
| migration-checkpoint-ownership.test.ts | ||
| openclaw-native-skills.test.ts | ||
| plan-tune.test.ts | ||
| readme-throughput.test.ts | ||
| relink.test.ts | ||
| review-log.test.ts | ||
| setup-codesign.test.ts | ||
| ship-version-sync.test.ts | ||
| skill-collision-sentinel.test.ts | ||
| skill-e2e-autoplan-dual-voice.test.ts | ||
| skill-e2e-bws.test.ts | ||
| skill-e2e-context-skills.test.ts | ||
| skill-e2e-cso.test.ts | ||
| skill-e2e-deploy.test.ts | ||
| skill-e2e-design.test.ts | ||
| skill-e2e-learnings.test.ts | ||
| skill-e2e-plan-tune.test.ts | ||
| skill-e2e-plan.test.ts | ||
| skill-e2e-qa-bugs.test.ts | ||
| skill-e2e-qa-workflow.test.ts | ||
| skill-e2e-review-army.test.ts | ||
| skill-e2e-review.test.ts | ||
| skill-e2e-session-intelligence.test.ts | ||
| skill-e2e-sidebar.test.ts | ||
| skill-e2e-workflow.test.ts | ||
| skill-e2e.test.ts | ||
| skill-llm-eval.test.ts | ||
| skill-parser.test.ts | ||
| skill-routing-e2e.test.ts | ||
| skill-validation.test.ts | ||
| team-mode.test.ts | ||
| telemetry.test.ts | ||
| timeline.test.ts | ||
| touchfiles.test.ts | ||
| uninstall.test.ts | ||
| upgrade-migration-v1.test.ts | ||
| v0-dormancy.test.ts | ||
| worktree.test.ts | ||
| writing-style-resolver.test.ts | ||