claude-code-superkit 0.0.0-stage → 1.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +374 -2
- package/bin/cli.js +153 -0
- package/bin/inject-tokens.js +224 -0
- package/bin/measure-tokens.js +17 -0
- package/bin/superkit-counts-verify.sh +30 -0
- package/lib/codex.js +246 -0
- package/lib/docs-scaffold.js +147 -0
- package/lib/installer.js +499 -0
- package/lib/prompts.js +51 -0
- package/lib/settings-builder.js +51 -0
- package/lib/superpowers.js +99 -0
- package/lib/utils.js +117 -0
- package/lib/validator.js +84 -0
- package/package.json +49 -4
- package/packages/codex/AGENTS.md +396 -0
- package/packages/codex/INSTALL.md +342 -0
- package/packages/codex/config.toml +22 -0
- package/packages/codex/hooks/superkit.mjs +203 -0
- package/packages/codex/hooks.json +30 -0
- package/packages/codex/legacy-baseline.json +88 -0
- package/packages/codex/native-skills.txt +65 -0
- package/packages/codex/rules/default.rules +565 -0
- package/packages/codex/skills/ai-slop-cleaner/SKILL.md +44 -0
- package/packages/codex/skills/api-contract-sync/SKILL.md +96 -0
- package/packages/codex/skills/architect/SKILL.md +49 -0
- package/packages/codex/skills/audit-backend/SKILL.md +80 -0
- package/packages/codex/skills/audit-frontend/SKILL.md +82 -0
- package/packages/codex/skills/audit-infra/SKILL.md +87 -0
- package/packages/codex/skills/audit-orchestrator/SKILL.md +114 -0
- package/packages/codex/skills/behavioral-nudge-engine/SKILL.md +110 -0
- package/packages/codex/skills/benchmark/SKILL.md +49 -0
- package/packages/codex/skills/bot-reviewer/SKILL.md +94 -0
- package/packages/codex/skills/code-reviewer/SKILL.md +67 -0
- package/packages/codex/skills/codebase-onboarding-engineer/SKILL.md +46 -0
- package/packages/codex/skills/comment-rot-analyzer/SKILL.md +75 -0
- package/packages/codex/skills/commit-helper/SKILL.md +101 -0
- package/packages/codex/skills/critic/SKILL.md +56 -0
- package/packages/codex/skills/database-reviewer/SKILL.md +79 -0
- package/packages/codex/skills/debug-observer/SKILL.md +107 -0
- package/packages/codex/skills/dependency-checker/SKILL.md +69 -0
- package/packages/codex/skills/design-system-reviewer/SKILL.md +121 -0
- package/packages/codex/skills/dev-orchestrator/SKILL.md +304 -0
- package/packages/codex/skills/docs-reviewer/SKILL.md +86 -0
- package/packages/codex/skills/drizzle-orm-expert/SKILL.md +246 -0
- package/packages/codex/skills/e2e-test-generator/SKILL.md +95 -0
- package/packages/codex/skills/evaluator/SKILL.md +63 -0
- package/packages/codex/skills/frontend-perf-reviewer/SKILL.md +95 -0
- package/packages/codex/skills/frontend-ui-color-reviewer/SKILL.md +68 -0
- package/packages/codex/skills/frontend-ui-design-critic/SKILL.md +99 -0
- package/packages/codex/skills/frontend-ui-interaction-reviewer/SKILL.md +102 -0
- package/packages/codex/skills/frontend-ui-motion-reviewer/SKILL.md +85 -0
- package/packages/codex/skills/frontend-ui-reviewer/SKILL.md +81 -0
- package/packages/codex/skills/frontend-ui-typography-reviewer/SKILL.md +62 -0
- package/packages/codex/skills/gltf-debugging/SKILL.md +128 -0
- package/packages/codex/skills/go-benchmark/SKILL.md +217 -0
- package/packages/codex/skills/go-concurrency-reviewer/SKILL.md +113 -0
- package/packages/codex/skills/go-error-reviewer/SKILL.md +107 -0
- package/packages/codex/skills/go-grpc-patterns/SKILL.md +285 -0
- package/packages/codex/skills/go-modernizer/SKILL.md +111 -0
- package/packages/codex/skills/go-observability-reviewer/SKILL.md +121 -0
- package/packages/codex/skills/go-performance-reviewer/SKILL.md +112 -0
- package/packages/codex/skills/go-reviewer/SKILL.md +109 -0
- package/packages/codex/skills/go-samber-do/SKILL.md +158 -0
- package/packages/codex/skills/go-samber-lo/SKILL.md +178 -0
- package/packages/codex/skills/go-samber-oops/SKILL.md +174 -0
- package/packages/codex/skills/goal-verifier/SKILL.md +53 -0
- package/packages/codex/skills/health-checker/SKILL.md +109 -0
- package/packages/codex/skills/html-to-3d-texture/SKILL.md +153 -0
- package/packages/codex/skills/impeccable-craft/SKILL.md +101 -0
- package/packages/codex/skills/lint-runner/SKILL.md +85 -0
- package/packages/codex/skills/migrate/SKILL.md +60 -0
- package/packages/codex/skills/migration-reviewer/SKILL.md +88 -0
- package/packages/codex/skills/minimal-change-engineer/SKILL.md +44 -0
- package/packages/codex/skills/new-migration/SKILL.md +59 -0
- package/packages/codex/skills/nextjs-supabase-auth/SKILL.md +227 -0
- package/packages/codex/skills/output-enforcement/SKILL.md +71 -0
- package/packages/codex/skills/plan-checker/SKILL.md +53 -0
- package/packages/codex/skills/postgresql-optimization/SKILL.md +159 -0
- package/packages/codex/skills/pre-deploy-validator/SKILL.md +111 -0
- package/packages/codex/skills/presentation-reviewer/SKILL.md +88 -0
- package/packages/codex/skills/product-3d-lighting/SKILL.md +137 -0
- package/packages/codex/skills/project-architecture/SKILL.md +52 -0
- package/packages/codex/skills/py-reviewer/SKILL.md +100 -0
- package/packages/codex/skills/r3f-scene-reviewer/SKILL.md +88 -0
- package/packages/codex/skills/r3f-scroll-driven-3d/SKILL.md +162 -0
- package/packages/codex/skills/reality-checker/SKILL.md +61 -0
- package/packages/codex/skills/redis-patterns/SKILL.md +260 -0
- package/packages/codex/skills/review-orchestrator/SKILL.md +151 -0
- package/packages/codex/skills/rs-reviewer/SKILL.md +98 -0
- package/packages/codex/skills/ru-text/SKILL.md +132 -0
- package/packages/codex/skills/scaffold-endpoint/SKILL.md +44 -0
- package/packages/codex/skills/security-scanner/SKILL.md +94 -0
- package/packages/codex/skills/silent-failure-hunter/SKILL.md +176 -0
- package/packages/codex/skills/telegram-bot-builder/SKILL.md +120 -0
- package/packages/codex/skills/test-generator/SKILL.md +79 -0
- package/packages/codex/skills/test-runner/SKILL.md +101 -0
- package/packages/codex/skills/threejs-color-management/SKILL.md +97 -0
- package/packages/codex/skills/tree-generator/SKILL.md +63 -0
- package/packages/codex/skills/ts-reviewer/SKILL.md +90 -0
- package/packages/codex/skills/ui-design-reviewer/SKILL.md +89 -0
- package/packages/codex/skills/ui-reviewer/SKILL.md +103 -0
- package/packages/codex/skills/visual-reviewer/SKILL.md +85 -0
- package/packages/codex/skills/writing-agents/SKILL.md +165 -0
- package/packages/codex/skills/writing-commands/SKILL.md +173 -0
- package/packages/core/CLAUDE.md +118 -0
- package/packages/core/INTERNAL-FILES +16 -0
- package/packages/core/agents/ai-slop-cleaner.md +187 -0
- package/packages/core/agents/api-contract-sync.md +127 -0
- package/packages/core/agents/architect.md +205 -0
- package/packages/core/agents/audit-backend.md +137 -0
- package/packages/core/agents/audit-frontend.md +129 -0
- package/packages/core/agents/audit-infra.md +182 -0
- package/packages/core/agents/behavioral-nudge-engine.md +170 -0
- package/packages/core/agents/code-reviewer.md +195 -0
- package/packages/core/agents/codebase-onboarding-engineer.md +172 -0
- package/packages/core/agents/comment-rot-analyzer.md +115 -0
- package/packages/core/agents/critic.md +172 -0
- package/packages/core/agents/database-reviewer.md +201 -0
- package/packages/core/agents/debug-observer.md +261 -0
- package/packages/core/agents/dependency-checker.md +199 -0
- package/packages/core/agents/docs-reviewer.md +206 -0
- package/packages/core/agents/e2e-test-generator.md +261 -0
- package/packages/core/agents/evaluator.md +141 -0
- package/packages/core/agents/goal-verifier.md +130 -0
- package/packages/core/agents/health-checker.md +194 -0
- package/packages/core/agents/migration-reviewer.md +161 -0
- package/packages/core/agents/minimal-change-engineer.md +219 -0
- package/packages/core/agents/plan-checker.md +139 -0
- package/packages/core/agents/pre-deploy-validator.md +189 -0
- package/packages/core/agents/reality-checker.md +175 -0
- package/packages/core/agents/scaffold-endpoint.md +162 -0
- package/packages/core/agents/security-scanner.md +236 -0
- package/packages/core/agents/silent-failure-hunter.md +276 -0
- package/packages/core/agents/test-generator.md +146 -0
- package/packages/core/agents/tree-generator.md +141 -0
- package/packages/core/agents/ui-reviewer.md +172 -0
- package/packages/core/agents/visual-reviewer.md +211 -0
- package/packages/core/commands/audit.md +166 -0
- package/packages/core/commands/benchmark.md +130 -0
- package/packages/core/commands/commit.md +148 -0
- package/packages/core/commands/dev.md +302 -0
- package/packages/core/commands/docs-init.md +75 -0
- package/packages/core/commands/lint.md +137 -0
- package/packages/core/commands/migrate.md +146 -0
- package/packages/core/commands/new-migration.md +182 -0
- package/packages/core/commands/pair.md +209 -0
- package/packages/core/commands/review.md +195 -0
- package/packages/core/commands/security-scan.md +142 -0
- package/packages/core/commands/superkit-evolve.md +231 -0
- package/packages/core/commands/superkit-init.md +274 -0
- package/packages/core/commands/test.md +108 -0
- package/packages/core/commands/workflow.md +150 -0
- package/packages/core/docs/guide/01-getting-started.md +41 -0
- package/packages/core/docs-templates/README.md +33 -0
- package/packages/core/docs-templates/adr-template.md +62 -0
- package/packages/core/docs-templates/architecture/api-contracts.md +26 -0
- package/packages/core/docs-templates/architecture/api-reference.md +48 -0
- package/packages/core/docs-templates/architecture/auth-and-sessions.md +38 -0
- package/packages/core/docs-templates/architecture/backend-layers.md +42 -0
- package/packages/core/docs-templates/architecture/data-flow.md +26 -0
- package/packages/core/docs-templates/architecture/database-schema.md +51 -0
- package/packages/core/docs-templates/architecture/deployment.md +41 -0
- package/packages/core/docs-templates/architecture/frontend-state.md +46 -0
- package/packages/core/helpers/statusline.cjs +370 -0
- package/packages/core/hooks/CHAIN-SEMANTICS.md +84 -0
- package/packages/core/hooks/audit-settings-source.sh +98 -0
- package/packages/core/hooks/audit-trail.sh +120 -0
- package/packages/core/hooks/block-dangerous-git.sh +189 -0
- package/packages/core/hooks/bundle-import-check.sh +64 -0
- package/packages/core/hooks/compact-state-inject.sh +84 -0
- package/packages/core/hooks/config-protection.sh +68 -0
- package/packages/core/hooks/console-log-warning.sh +28 -0
- package/packages/core/hooks/context-monitor.sh +35 -0
- package/packages/core/hooks/dev-edit-counter.sh +59 -0
- package/packages/core/hooks/dev-marker-set.sh +55 -0
- package/packages/core/hooks/dev-required-on-commit.sh +426 -0
- package/packages/core/hooks/doc-check-on-commit.sh +396 -0
- package/packages/core/hooks/edit-streak-check.sh +63 -0
- package/packages/core/hooks/evolve-check.sh +78 -0
- package/packages/core/hooks/gateguard-pre-edit.sh +154 -0
- package/packages/core/hooks/gateguard-record-facts.sh +37 -0
- package/packages/core/hooks/intake-classifier.py +449 -0
- package/packages/core/hooks/lib/profile.sh +141 -0
- package/packages/core/hooks/loop-guard.sh +75 -0
- package/packages/core/hooks/migration-safety.sh +56 -0
- package/packages/core/hooks/plan-completion-gate.sh +61 -0
- package/packages/core/hooks/pre-compact-save.sh +89 -0
- package/packages/core/hooks/security-patterns.sh +119 -0
- package/packages/core/hooks/session-context-restore.sh +76 -0
- package/packages/core/hooks/subagent-stop-validate.sh +73 -0
- package/packages/core/hooks/superkit-counts-verify.sh +346 -0
- package/packages/core/hooks/superkit-update.sh +367 -0
- package/packages/core/hooks/tests/README.md +42 -0
- package/packages/core/hooks/tests/audit-trail-chain_test.sh +62 -0
- package/packages/core/hooks/tests/block-dangerous-git_test.sh +144 -0
- package/packages/core/hooks/tests/chain-semantics/h1.sh +11 -0
- package/packages/core/hooks/tests/chain-semantics/h2.sh +9 -0
- package/packages/core/hooks/tests/chain-semantics/h3.sh +11 -0
- package/packages/core/hooks/tests/chain-semantics/run-experiment.sh +65 -0
- package/packages/core/hooks/tests/chain-semantics/settings-experiment.json +15 -0
- package/packages/core/hooks/tests/counts-verify_test.sh +118 -0
- package/packages/core/hooks/tests/dev-required-on-commit_test.sh +207 -0
- package/packages/core/hooks/tests/dev-required-wip-on-main_test.sh +20 -0
- package/packages/core/hooks/tests/doc-check-on-commit_test.sh +122 -0
- package/packages/core/hooks/tests/edit-streak-check_test.sh +106 -0
- package/packages/core/hooks/tests/internal-manifest_test.sh +130 -0
- package/packages/core/hooks/tests/json-path_test.sh +108 -0
- package/packages/core/hooks/tests/mirror-invariants_test.sh +139 -0
- package/packages/core/hooks/tests/nudge-throttle_test.sh +95 -0
- package/packages/core/hooks/tests/profile-helper_test.sh +21 -0
- package/packages/core/hooks/tests/run-all.sh +47 -0
- package/packages/core/hooks/tests/session-key-helper_test.sh +17 -0
- package/packages/core/hooks/tests/superkit-update_test.sh +311 -0
- package/packages/core/hooks/tests/warn-visibility_test.sh +59 -0
- package/packages/core/hooks/user-intent-detect.sh +44 -0
- package/packages/core/hooks/verify-hooks.sh +69 -0
- package/packages/core/rules/auto-commands.md +124 -0
- package/packages/core/rules/coding-style.md +68 -0
- package/packages/core/rules/dev-workflow.md +77 -0
- package/packages/core/rules/documentation.md +106 -0
- package/packages/core/rules/frontend-aesthetics.md +53 -0
- package/packages/core/rules/git-workflow.md +14 -0
- package/packages/core/rules/security.md +29 -0
- package/packages/core/rules/superkit-integrity.md +114 -0
- package/packages/core/settings.json +229 -0
- package/packages/core/skills/drizzle-orm-expert/SKILL.md +260 -0
- package/packages/core/skills/nextjs-supabase-auth/SKILL.md +259 -0
- package/packages/core/skills/postgresql-optimization/SKILL.md +150 -0
- package/packages/core/skills/project-architecture/SKILL.md +31 -0
- package/packages/core/skills/project-scanner/SKILL.md +132 -0
- package/packages/core/skills/redis-patterns/SKILL.md +261 -0
- package/packages/core/skills/ru-text/SKILL.md +156 -0
- package/packages/core/skills/telegram-bot-builder/SKILL.md +145 -0
- package/packages/core/skills/writing-agents/SKILL.md +220 -0
- package/packages/core/skills/writing-commands/SKILL.md +176 -0
- package/packages/core/skills/writing-hooks/SKILL.md +335 -0
- package/packages/extras/bot-reviewer.md +279 -0
- package/packages/extras/design-system-reviewer.md +234 -0
- package/packages/extras/red-blue-auditor/README.md +117 -0
- package/packages/extras/red-blue-auditor/agent.md +128 -0
- package/packages/extras/red-blue-auditor/patterns/agent-config.txt +4 -0
- package/packages/extras/red-blue-auditor/patterns/hook-injection.txt +8 -0
- package/packages/extras/red-blue-auditor/patterns/mcp-risk.txt +5 -0
- package/packages/extras/red-blue-auditor/patterns/permission-abuse.txt +6 -0
- package/packages/extras/red-blue-auditor/patterns/secrets.txt +17 -0
- package/packages/extras/red-blue-auditor/scan.sh +88 -0
- package/packages/extras/skillsmp-search/SKILL.md +134 -0
- package/packages/frontend-3d/README.md +62 -0
- package/packages/frontend-3d/agents/frontend-perf-reviewer.md +164 -0
- package/packages/frontend-3d/agents/presentation-reviewer.md +146 -0
- package/packages/frontend-3d/agents/r3f-scene-reviewer.md +128 -0
- package/packages/frontend-3d/agents/ui-design-reviewer.md +169 -0
- package/packages/frontend-3d/commands/capture-screen.md +166 -0
- package/packages/frontend-3d/hooks/bundle-size-warn.sh +93 -0
- package/packages/frontend-3d/hooks/gsap-pattern-check.sh +74 -0
- package/packages/frontend-3d/hooks/r3f-color-check.sh +76 -0
- package/packages/frontend-3d/hooks/tailwind-version-guard.sh +98 -0
- package/packages/frontend-3d/rules/frontend-aesthetics-3d.md +81 -0
- package/packages/frontend-3d/rules/gsap-conventions.md +129 -0
- package/packages/frontend-3d/rules/threejs-conventions.md +116 -0
- package/packages/frontend-3d/skills/gltf-debugging/SKILL.md +145 -0
- package/packages/frontend-3d/skills/html-to-3d-texture/SKILL.md +183 -0
- package/packages/frontend-3d/skills/output-enforcement/SKILL.md +79 -0
- package/packages/frontend-3d/skills/product-3d-lighting/SKILL.md +166 -0
- package/packages/frontend-3d/skills/r3f-scroll-driven-3d/SKILL.md +209 -0
- package/packages/frontend-3d/skills/threejs-color-management/SKILL.md +111 -0
- package/packages/frontend-ui/NOTICE.md +99 -0
- package/packages/frontend-ui/README.md +59 -0
- package/packages/frontend-ui/agents/ui-color-reviewer.md +174 -0
- package/packages/frontend-ui/agents/ui-design-critic.md +198 -0
- package/packages/frontend-ui/agents/ui-interaction-reviewer.md +259 -0
- package/packages/frontend-ui/agents/ui-motion-reviewer.md +266 -0
- package/packages/frontend-ui/agents/ui-reviewer.md +251 -0
- package/packages/frontend-ui/agents/ui-typography-reviewer.md +222 -0
- package/packages/frontend-ui/hooks/tests/ui-animation-easing-check_test.sh +78 -0
- package/packages/frontend-ui/hooks/tests/ui-banned-fonts-check_test.sh +77 -0
- package/packages/frontend-ui/hooks/tests/ui-color-check_test.sh +75 -0
- package/packages/frontend-ui/hooks/ui-animation-easing-check.sh +86 -0
- package/packages/frontend-ui/hooks/ui-banned-fonts-check.sh +90 -0
- package/packages/frontend-ui/hooks/ui-color-check.sh +102 -0
- package/packages/frontend-ui/rules/color-and-contrast.md +230 -0
- package/packages/frontend-ui/rules/frontend-design-aesthetics.md +124 -0
- package/packages/frontend-ui/rules/interaction-polish.md +335 -0
- package/packages/frontend-ui/rules/motion-and-animation.md +283 -0
- package/packages/frontend-ui/rules/spatial-and-layout.md +212 -0
- package/packages/frontend-ui/rules/typography-guidelines.md +185 -0
- package/packages/frontend-ui/rules/ui-anti-patterns.md +309 -0
- package/packages/frontend-ui/settings.json +24 -0
- package/packages/frontend-ui/skills/impeccable-craft/SKILL.md +187 -0
- package/packages/gan/README.md +232 -0
- package/packages/gan/agents/gan-evaluator.md +214 -0
- package/packages/gan/agents/gan-generator.md +171 -0
- package/packages/gan/agents/gan-planner.md +206 -0
- package/packages/gan/rubrics/functionality.md +66 -0
- package/packages/gan/rubrics/ui-quality.md +77 -0
- package/packages/gan/skills/gan-evaluator/SKILL.md +91 -0
- package/packages/gan/skills/gan-generator/SKILL.md +72 -0
- package/packages/gan/skills/gan-planner/SKILL.md +93 -0
- package/packages/stack-agents/go/go-concurrency-reviewer.md +210 -0
- package/packages/stack-agents/go/go-error-reviewer.md +187 -0
- package/packages/stack-agents/go/go-modernizer.md +160 -0
- package/packages/stack-agents/go/go-observability-reviewer.md +185 -0
- package/packages/stack-agents/go/go-performance-reviewer.md +160 -0
- package/packages/stack-agents/go/go-reviewer.md +277 -0
- package/packages/stack-agents/go/references/benchmark-methodology.md +280 -0
- package/packages/stack-agents/go/references/channel-patterns.md +384 -0
- package/packages/stack-agents/go/references/cli-cobra-viper.md +190 -0
- package/packages/stack-agents/go/references/code-style.md +262 -0
- package/packages/stack-agents/go/references/context-propagation.md +317 -0
- package/packages/stack-agents/go/references/data-structures.md +315 -0
- package/packages/stack-agents/go/references/database-patterns.md +334 -0
- package/packages/stack-agents/go/references/design-patterns.md +411 -0
- package/packages/stack-agents/go/references/di-frameworks.md +146 -0
- package/packages/stack-agents/go/references/error-creation.md +251 -0
- package/packages/stack-agents/go/references/error-inspection.md +348 -0
- package/packages/stack-agents/go/references/error-wrapping.md +230 -0
- package/packages/stack-agents/go/references/gopls-driving.md +62 -0
- package/packages/stack-agents/go/references/goroutine-lifecycle.md +351 -0
- package/packages/stack-agents/go/references/graphql-patterns.md +221 -0
- package/packages/stack-agents/go/references/grpc-patterns.md +373 -0
- package/packages/stack-agents/go/references/modernize-guide.md +522 -0
- package/packages/stack-agents/go/references/module-management.md +191 -0
- package/packages/stack-agents/go/references/naming-conventions.md +176 -0
- package/packages/stack-agents/go/references/observability-pipeline.md +352 -0
- package/packages/stack-agents/go/references/performance-profiling.md +250 -0
- package/packages/stack-agents/go/references/refactoring-mechanics.md +127 -0
- package/packages/stack-agents/go/references/rest-openapi-patterns.md +160 -0
- package/packages/stack-agents/go/references/samber-do.md +201 -0
- package/packages/stack-agents/go/references/samber-libraries.md +363 -0
- package/packages/stack-agents/go/references/samber-lo.md +260 -0
- package/packages/stack-agents/go/references/samber-oops.md +200 -0
- package/packages/stack-agents/go/references/security-checklist.md +441 -0
- package/packages/stack-agents/go/references/standard-stdlib-now.md +181 -0
- package/packages/stack-agents/go/references/stay-updated.md +147 -0
- package/packages/stack-agents/go/references/structs-interfaces.md +312 -0
- package/packages/stack-agents/go/references/sync-primitives.md +395 -0
- package/packages/stack-agents/go/references/testing-patterns.md +483 -0
- package/packages/stack-agents/go/references/troubleshooting.md +98 -0
- package/packages/stack-agents/python/py-reviewer.md +194 -0
- package/packages/stack-agents/rust/rs-reviewer.md +188 -0
- package/packages/stack-agents/typescript/ts-reviewer.md +135 -0
- package/packages/stack-hooks/go/go-context-check-on-edit.sh +56 -0
- package/packages/stack-hooks/go/go-error-check-on-edit.sh +54 -0
- package/packages/stack-hooks/go/go-format-on-edit.sh +32 -0
- package/packages/stack-hooks/go/go-safety-check-on-edit.sh +54 -0
- package/packages/stack-hooks/go/go-vet-on-edit.sh +61 -0
- package/packages/stack-hooks/go/golangci-lint-on-edit.sh +54 -0
- package/packages/stack-hooks/python/ruff-on-edit.sh +67 -0
- package/packages/stack-hooks/rust/cargo-check-on-edit.sh +64 -0
- package/packages/stack-hooks/typescript/typecheck-on-edit.sh +76 -0
- package/packages/stack-rules/go/go-conventions.md +44 -0
- package/packages/stack-rules/go/go-safety.md +35 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: writing-commands
|
|
3
|
+
description: Use when creating or revising a Codex user-invocable workflow skill, including its inputs, phases, delegation, verification, or completion contract.
|
|
4
|
+
user-invocable: false
|
|
5
|
+
tokens: 2280
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Writing Codex User-Invocable Skills
|
|
9
|
+
|
|
10
|
+
A command-like Codex workflow is a skill in
|
|
11
|
+
`.codex/skills/<skill-name>/SKILL.md` with `user-invocable: true`, rather than a
|
|
12
|
+
Claude slash-command file. Author one defined outcome with explicit inputs,
|
|
13
|
+
authority, verification, and a stopping condition. Reuse an accepted workflow
|
|
14
|
+
when revising it; preserve useful domain phases and mandatory project gates.
|
|
15
|
+
|
|
16
|
+
## Skill File Format
|
|
17
|
+
|
|
18
|
+
```yaml
|
|
19
|
+
---
|
|
20
|
+
name: workflow-name
|
|
21
|
+
description: Use when the user requests the specific outcome this workflow serves.
|
|
22
|
+
user-invocable: true
|
|
23
|
+
---
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Put input interpretation and workflow phases in the body. Use a contextual trigger
|
|
27
|
+
in `description`; do not add Claude-only per-agent model or tool allow-list
|
|
28
|
+
metadata. Superkit sources also declare `tokens`, computed with
|
|
29
|
+
`Math.round(body.length / 4)` excluding frontmatter. This source-size estimate is
|
|
30
|
+
not a runtime token budget, progress measure, or permission to truncate required
|
|
31
|
+
work. Project configuration supplies model/effort defaults; honor applicable
|
|
32
|
+
session/project routing and supported scoped dispatch overrides. Consumer examples
|
|
33
|
+
must not impose this repository's contributor model assignments.
|
|
34
|
+
|
|
35
|
+
## Inputs and Scope
|
|
36
|
+
|
|
37
|
+
Define the outcome, target, mode, constraints, accepted plan, and acceptance checks
|
|
38
|
+
before taking consequential action. Read applicable `AGENTS.md` and inspect the
|
|
39
|
+
relevant project evidence. Treat input examples as supported forms with an
|
|
40
|
+
explicit interpretation, not a license to guess:
|
|
41
|
+
|
|
42
|
+
- **Empty target:** use an established default only if the skill defines it and
|
|
43
|
+
it fits the request. Otherwise resolve the missing target.
|
|
44
|
+
- **Mode keyword:** choose a documented mode; unknown text is not silently a mode.
|
|
45
|
+
- **Branch/ref:** resolve it in the intended repository and state the comparison
|
|
46
|
+
semantics (for example merge-base versus direct base/head diff). A branch can
|
|
47
|
+
mean a target or a base; clarify when the request leaves a material ambiguity.
|
|
48
|
+
- **PR reference:** resolve repository and PR identity with available authorized
|
|
49
|
+
tooling. A bare number is not inherently a PR. Reading PR context does not
|
|
50
|
+
authorize comments, branch changes, merges, or publication.
|
|
51
|
+
- **Other text:** retain the user's requirements; do not interpolate raw input
|
|
52
|
+
into shell commands. Use structured tool arguments or proper shell quoting,
|
|
53
|
+
validate refs/paths and option boundaries, and avoid exposing secrets in output.
|
|
54
|
+
|
|
55
|
+
Proceed with supported independent work while resolving a blocker. Report the
|
|
56
|
+
specific missing input or capability; do not substitute another repository, diff,
|
|
57
|
+
mode, or mutating action to make the workflow appear complete.
|
|
58
|
+
|
|
59
|
+
## The Orchestrator Pattern
|
|
60
|
+
|
|
61
|
+
Choose phases that serve the requested result. A typical implementation workflow
|
|
62
|
+
may use the following; a read-only review or test run does not acquire edit
|
|
63
|
+
authority from this example.
|
|
64
|
+
|
|
65
|
+
```text
|
|
66
|
+
Understand -> establish requested result, scope, authority, and project facts
|
|
67
|
+
Plan -> reuse the accepted plan; track material multi-step work if useful
|
|
68
|
+
Execute -> perform only the authorized operations, preserving unrelated user work
|
|
69
|
+
Verify -> run relevant checks and required acceptance gates; inspect results
|
|
70
|
+
Review -> obtain the required review with its native verdict and coverage
|
|
71
|
+
Document -> update affected docs when part of the authorized deliverable
|
|
72
|
+
Report -> state result, evidence, remaining work, and the stopping condition
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Tests belong with verification; select behavior and failure-path checks relevant
|
|
76
|
+
to the change and risk. Do not add tests that merely mirror prose or constants.
|
|
77
|
+
An implementation skill must complete required integration and error paths within
|
|
78
|
+
scope. A review/plan skill stops at its assessment unless implementation is also
|
|
79
|
+
authorized. Branch creation, commits, pushes, messages, and releases each follow
|
|
80
|
+
the task's actual authority; none is an automatic final phase of every workflow.
|
|
81
|
+
|
|
82
|
+
Use tools exposed by the runtime: `rg`/`rg --files` for search, `exec_command` for
|
|
83
|
+
shell checks, `apply_patch` for authorized manual edits, and `update_plan` when a
|
|
84
|
+
tracked plan is useful and available. Missing tools require a stated limitation
|
|
85
|
+
or an available authorized equivalent, not invented execution. Inspect existing
|
|
86
|
+
commands and their effects before running them; tests/builds can contact services,
|
|
87
|
+
write data, or require credentials. Preserve existing user edits and distinguish
|
|
88
|
+
generated check output from deliverable changes.
|
|
89
|
+
|
|
90
|
+
## Dispatching Subagents
|
|
91
|
+
|
|
92
|
+
Use `spawn_agent` only when delegation is authorized and available. Give workers
|
|
93
|
+
bounded, disjoint ownership or suitable isolation, and use clean task context
|
|
94
|
+
where supported. Keep shared interfaces and final acceptance with the coordinator.
|
|
95
|
+
Apply explicit scoped model/effort routing; otherwise use the configured default.
|
|
96
|
+
Do not describe requested routing as observed runtime identity without evidence.
|
|
97
|
+
|
|
98
|
+
A reviewer brief should preserve the actual role contract, for example:
|
|
99
|
+
|
|
100
|
+
```text
|
|
101
|
+
Review only the assigned TypeScript changes.
|
|
102
|
+
Outcome and scope: <intent, repository, exact base/head or diff, assigned files>
|
|
103
|
+
Contracts and evidence: <relevant project rules, callers, recorded checks/results>
|
|
104
|
+
Boundaries: <read-only review, exclusions, other reviewers' ownership>
|
|
105
|
+
Return: <native verdict, supported findings or no findings, coverage, checks,
|
|
106
|
+
open questions, and unmet mandatory conditions>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Use the available wait/collection mechanism, such as `wait_agent`, to obtain every
|
|
110
|
+
result required for acceptance; continue independent work meanwhile. Inspect and
|
|
111
|
+
integrate the results rather than treating dispatch as review completion. If a
|
|
112
|
+
required worker fails, is unavailable, or cannot cover its scope, report the gap.
|
|
113
|
+
Inline self-review is not independent review and cannot replace a mandatory
|
|
114
|
+
independent gate. Re-review changed assumptions or unresolved issues when needed;
|
|
115
|
+
do not repeat unchanged passes without a concrete reason.
|
|
116
|
+
|
|
117
|
+
## Stack and Check Discovery
|
|
118
|
+
|
|
119
|
+
Stack markers are clues, not complete toolchain or command evidence:
|
|
120
|
+
|
|
121
|
+
```text
|
|
122
|
+
go.mod -> inspect Go version, module/workspace, test rules
|
|
123
|
+
package.json + tsconfig.json -> inspect scripts, workspace, lockfile, TS config
|
|
124
|
+
pyproject.toml/requirements.txt -> inspect Python environment and test configuration
|
|
125
|
+
Cargo.toml -> inspect Rust workspace, features, toolchain
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Prefer project commands from `AGENTS.md`, scripts, `Makefile`, or CI. Resolve the
|
|
129
|
+
working directory, package manager, prerequisites, relevant flags, and target scope.
|
|
130
|
+
A repository can contain several stacks; report which are applicable or uncovered.
|
|
131
|
+
Do not install dependencies or change configuration merely because detection is
|
|
132
|
+
incomplete. Carry genuine setup blockers into the result under existing authority.
|
|
133
|
+
|
|
134
|
+
## Example: Test-Runner Body
|
|
135
|
+
|
|
136
|
+
Use the user-invocable format above with a trigger such as “Use when the user asks
|
|
137
|
+
to run the project's tests or verify a selected test target.” The body can be:
|
|
138
|
+
|
|
139
|
+
```markdown
|
|
140
|
+
# Test Runner
|
|
141
|
+
|
|
142
|
+
1. Establish repository, requested test target, and applicable AGENTS.md guidance.
|
|
143
|
+
Preserve user files; this workflow runs tests and reports, without automatic fixes.
|
|
144
|
+
2. Discover the canonical command, working directory, and prerequisites from project
|
|
145
|
+
scripts/configuration or CI. Stack markers guide discovery. For example, go.mod
|
|
146
|
+
suggests inspecting Go test configuration; it does not prove go test ./... covers
|
|
147
|
+
required build tags, workspace modules, or integration setup.
|
|
148
|
+
3. Check command effects against the authorized scope. If safe execution depends on
|
|
149
|
+
missing setup, access, or clarification, name that blocker and continue only the
|
|
150
|
+
independent supported checks. Do not fabricate a passing fallback.
|
|
151
|
+
4. Run the selected command with an available execution tool and inspect its exit
|
|
152
|
+
status and output. An empty selection, skipped tests, timeout, unavailable runner,
|
|
153
|
+
or failing setup is not a passing requested suite, even if a wrapper exits zero.
|
|
154
|
+
5. Report exact command/directory/target, result, relevant failure lines without
|
|
155
|
+
secrets, skipped or unrun scope, and remaining required verification. Stop here;
|
|
156
|
+
repairs require implementation authority.
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Completion Contract
|
|
160
|
+
|
|
161
|
+
Conclude against the requested result and mandatory acceptance criteria. Report
|
|
162
|
+
what changed or was inspected, actual verification commands and outcomes, coverage
|
|
163
|
+
limits, and the next concrete action for unresolved work. An unrun, failed, or
|
|
164
|
+
unavailable required gate leaves the deliverable INCOMPLETE even when edits are
|
|
165
|
+
finished; distinguish implementation status from acceptance status. Optional
|
|
166
|
+
unknowns need not block an otherwise satisfied contract.
|
|
167
|
+
|
|
168
|
+
A build, static check, source review, or skill metadata check establishes only that
|
|
169
|
+
evidence level. Do not call it runtime, deployment, or live model acceptance. If
|
|
170
|
+
real output/context limits prevent completion, save a coherent checkpoint with
|
|
171
|
+
changes, remaining work, and verification state; resume only after checking for
|
|
172
|
+
intervening edits. A phase count, token count, dispatched worker, or created branch
|
|
173
|
+
is not proof of the user's outcome.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# YOUR_PROJECT_NAME
|
|
2
|
+
|
|
3
|
+
> TODO: One-line project description.
|
|
4
|
+
|
|
5
|
+
## Tech Stack
|
|
6
|
+
|
|
7
|
+
| Component | Stack |
|
|
8
|
+
|-----------|-------|
|
|
9
|
+
| **Backend** | TODO: language, framework, database |
|
|
10
|
+
| **Frontend** | TODO: framework, bundler, CSS |
|
|
11
|
+
| **Infra** | TODO: Docker, CI/CD, cloud |
|
|
12
|
+
|
|
13
|
+
## Project Structure
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
TODO: top-level directory layout
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Key Commands
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Build
|
|
23
|
+
TODO: build commands
|
|
24
|
+
|
|
25
|
+
# Test
|
|
26
|
+
TODO: test commands
|
|
27
|
+
|
|
28
|
+
# Lint / Format
|
|
29
|
+
TODO: lint commands
|
|
30
|
+
|
|
31
|
+
# Database
|
|
32
|
+
TODO: migration commands
|
|
33
|
+
|
|
34
|
+
# Dev
|
|
35
|
+
TODO: dev server commands
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Conventions
|
|
39
|
+
|
|
40
|
+
- TODO: language formatting rules
|
|
41
|
+
- TODO: error handling patterns
|
|
42
|
+
- TODO: commit message format (conventional commits recommended)
|
|
43
|
+
- TODO: API style (REST/GraphQL, auth pattern)
|
|
44
|
+
- TODO: env var strategy (.env files, VITE_* prefix, etc.)
|
|
45
|
+
|
|
46
|
+
## Architecture Reference
|
|
47
|
+
|
|
48
|
+
> Fill in after running `/docs-init`. Update when code changes affect architecture.
|
|
49
|
+
|
|
50
|
+
| Doc | Description |
|
|
51
|
+
|-----|-------------|
|
|
52
|
+
| `docs/architecture/backend-layers.md` | TODO: Layers, DI, error handling |
|
|
53
|
+
| `docs/architecture/api-reference.md` | TODO: All API endpoints |
|
|
54
|
+
| `docs/architecture/database-schema.md` | TODO: Tables, migrations, indexes |
|
|
55
|
+
| `docs/architecture/auth-and-sessions.md` | TODO: Auth flow, sessions |
|
|
56
|
+
| `docs/architecture/frontend-state.md` | TODO: State, routing, data fetching |
|
|
57
|
+
| `docs/architecture/deployment.md` | TODO: Deploy process, environments |
|
|
58
|
+
| `docs/trees/tree-monorepo.md` | TODO: Project directory structure |
|
|
59
|
+
|
|
60
|
+
## Migrations
|
|
61
|
+
|
|
62
|
+
Format: `TODO: path/000NNN_description.{up,down}.sql`
|
|
63
|
+
Current: `TODO: 000001..000NNN`
|
|
64
|
+
|
|
65
|
+
## Mandatory Documentation Updates
|
|
66
|
+
|
|
67
|
+
**Rule:** Code changes affecting logic/API/architecture MUST include doc updates in the same response.
|
|
68
|
+
|
|
69
|
+
### Checklist (after any code change)
|
|
70
|
+
1. Did I change an API endpoint? → update `docs/architecture/api-reference.md`
|
|
71
|
+
2. Did I add/change a DB table/column? → update `docs/architecture/database-schema.md`
|
|
72
|
+
3. Did I change auth/session logic? → update `docs/architecture/auth-and-sessions.md`
|
|
73
|
+
4. Did I change backend layers? → update `docs/architecture/backend-layers.md`
|
|
74
|
+
5. Did I change frontend state/routing? → update `docs/architecture/frontend-state.md`
|
|
75
|
+
6. Did I add/remove files or directories? → regenerate `docs/trees/`
|
|
76
|
+
|
|
77
|
+
### Rule: code without updated docs = incomplete task. Do it in the SAME response as the code.
|
|
78
|
+
|
|
79
|
+
## Context Management
|
|
80
|
+
|
|
81
|
+
Opus 4.8 provides a 1M-token context window, so compaction is rare — do not stop tasks early or abbreviate work due to context concerns. Opus 4.8 also recovers better after compaction, staying on task across long agentic traces. Be persistent and autonomous: complete tasks fully.
|
|
82
|
+
|
|
83
|
+
For unusually long sessions that do approach the limit, save progress to `.claude/.task-state.json` before the context refreshes. When compaction happens, always preserve: modified file list, current task description, test commands, and any active plan progress. For normal work, this is not needed.
|
|
84
|
+
|
|
85
|
+
## Parallel Execution
|
|
86
|
+
|
|
87
|
+
Opus 4.8 handles parallel tool calls well — use them aggressively whenever operations are independent. Batch into a single message:
|
|
88
|
+
|
|
89
|
+
- Reading 3+ files → multiple `Read` calls in parallel
|
|
90
|
+
- Searching for different patterns → multiple `Grep` calls in parallel
|
|
91
|
+
- Independent shell commands (e.g. `git status` + `git diff` + `git log`) → parallel `Bash` calls
|
|
92
|
+
- Dispatching independent subagents → all `Agent` calls in one message
|
|
93
|
+
- Reading a file + grepping for related symbols → parallel
|
|
94
|
+
|
|
95
|
+
Only sequence calls when the result of one informs the inputs of the next (e.g. grep first, then read the hit). Do NOT serialize out of caution — parallelism is cheaper and faster, and the model is capable of reasoning over many results at once.
|
|
96
|
+
|
|
97
|
+
## Effort
|
|
98
|
+
|
|
99
|
+
Opus 4.8 exposes an effort dial (default `high` on Claude Code; `xhigh` and `max` for demanding work; adaptive thinking only — no thinking budgets). Match effort to the task:
|
|
100
|
+
- **Deep specialists** (reality-checker, security-scanner, architecture/critic reviews, gan-evaluator) → `xhigh` or `max`.
|
|
101
|
+
- **Standard reviews / feature work** → `high` (the default).
|
|
102
|
+
- **Trivial mechanical edits** → default is fine.
|
|
103
|
+
|
|
104
|
+
Raise effort on retries and failed verification gates rather than re-running at the same level.
|
|
105
|
+
|
|
106
|
+
## Agent Usage
|
|
107
|
+
|
|
108
|
+
Use subagents when: parallel independent tasks, isolated context needed, 3+ files to analyze.
|
|
109
|
+
Work directly when: 1-2 files, sequential edits, maintaining context across steps, simple grep/read.
|
|
110
|
+
Do NOT spawn a subagent to read one file or run one grep — work directly.
|
|
111
|
+
|
|
112
|
+
## Active Plans
|
|
113
|
+
|
|
114
|
+
None yet.
|
|
115
|
+
|
|
116
|
+
## Known Constraints
|
|
117
|
+
|
|
118
|
+
TODO: list known limitations, stubs, tech debt.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# INTERNAL-FILES — single source of truth for repo-only files.
|
|
2
|
+
#
|
|
3
|
+
# These files live under packages/core/ but must NEVER ship into a consumer's
|
|
4
|
+
# .claude/. They only function inside the superkit repo itself (self-audit
|
|
5
|
+
# tooling). Listing them once here stops the skip-list from drifting across the
|
|
6
|
+
# three call sites that consume it:
|
|
7
|
+
# - lib/installer.js (skips them during install)
|
|
8
|
+
# - packages/core/hooks/superkit-counts-verify.sh (subtracts them from shipped counts)
|
|
9
|
+
# - packages/core/hooks/superkit-update.sh (skips them during update)
|
|
10
|
+
#
|
|
11
|
+
# Format: one packages/core-relative path per line. Lines starting with '#' and
|
|
12
|
+
# blank lines are ignored by parsers. The dirname of each path (hooks/ or rules/)
|
|
13
|
+
# selects its category. Never expand this list without evidence.
|
|
14
|
+
hooks/superkit-counts-verify.sh
|
|
15
|
+
hooks/verify-hooks.sh
|
|
16
|
+
rules/superkit-integrity.md
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ai-slop-cleaner
|
|
3
|
+
description: Clean AI-generated code anti-patterns — redundant comments, one-use abstractions, over-engineering, template slop — via behavior-preserving edits verified by compile/lint
|
|
4
|
+
tokens: 2088
|
|
5
|
+
model: opus
|
|
6
|
+
allowed-tools: Read, Grep, Glob, Edit, Bash
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# AI Slop Cleaner
|
|
10
|
+
|
|
11
|
+
Detect and fix AI-generated code anti-patterns. Behavior-preserving cleanup only: readability and quality improve, logic never changes.
|
|
12
|
+
|
|
13
|
+
## Hard Rules
|
|
14
|
+
|
|
15
|
+
- NEVER change logic, add features, or alter behavior — every fix must be provably behavior-preserving.
|
|
16
|
+
- Before ANY Edit: Read the full containing function AND Grep every call site of any symbol you plan to inline or delete.
|
|
17
|
+
- Ambiguous usage (exported symbol, possible external caller, unclear intent) → classify BORDERLINE and do NOT edit.
|
|
18
|
+
- Fix ONE category at a time to keep diffs reviewable; run compile/lint after each edited category.
|
|
19
|
+
- SLOP / BORDERLINE is this agent's own output enum — do not substitute reviewer severities (CRITICAL/WARNING/SUGGESTION).
|
|
20
|
+
- 0 findings is a valid result — do not manufacture slop.
|
|
21
|
+
|
|
22
|
+
## Phase 0 — Load Project Context
|
|
23
|
+
|
|
24
|
+
Read if present, skip silently if absent: `CLAUDE.md` or `AGENTS.md` (conventions + Key Commands for build/lint); `.editorconfig` or linter configs.
|
|
25
|
+
Use it to: distinguish project conventions from AI slop (the project MAY legitimately want verbose comments) and to find the compile/lint command for the Verify step.
|
|
26
|
+
|
|
27
|
+
## When to Use
|
|
28
|
+
|
|
29
|
+
- After the /dev Implement phase — clean AI output before review
|
|
30
|
+
- Before code review — catch slop before reviewers waste time on it
|
|
31
|
+
- Standalone cleanup pass on existing code
|
|
32
|
+
|
|
33
|
+
## Scope
|
|
34
|
+
|
|
35
|
+
1. Caller named files/dirs → scan exactly those.
|
|
36
|
+
2. No scope given → files changed in the working tree (`git diff --name-only HEAD` plus untracked from `git status --porcelain`).
|
|
37
|
+
3. Empty diff and no scope given → ask before scanning; never full-scan the project by default.
|
|
38
|
+
|
|
39
|
+
## Detection Checklist
|
|
40
|
+
|
|
41
|
+
### Category 1: Redundant Comments (MOST COMMON)
|
|
42
|
+
```
|
|
43
|
+
// This function returns the user ← states the obvious
|
|
44
|
+
// Import the http package ← describes the import
|
|
45
|
+
// Create a new instance ← describes the constructor
|
|
46
|
+
// Check if the value is nil ← restates the code
|
|
47
|
+
// TODO: implement this ← left by AI, not real TODO
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Action:** Remove comments that restate what the code already says. Keep comments that explain WHY, not WHAT.
|
|
51
|
+
|
|
52
|
+
### Category 2: Unnecessary Abstractions
|
|
53
|
+
```
|
|
54
|
+
// One-use helper wrapping a single call
|
|
55
|
+
func getUserByID(db *sql.DB, id string) (*User, error) {
|
|
56
|
+
return db.QueryRow("SELECT ...").Scan(...)
|
|
57
|
+
}
|
|
58
|
+
// Called exactly ONCE
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Action:** Inline one-use helpers. If a function is called once and its name matches what it does, it's noise.
|
|
62
|
+
|
|
63
|
+
### Category 3: Over-Engineering
|
|
64
|
+
- Feature flags for non-configurable behavior
|
|
65
|
+
- Backwards-compatibility shims with zero consumers
|
|
66
|
+
- Strategy/factory patterns for 1 implementation
|
|
67
|
+
- Generic types where concrete types suffice
|
|
68
|
+
- Interface for a single implementation (no testing need)
|
|
69
|
+
|
|
70
|
+
**Action:** Replace with direct, simple code. YAGNI. (canonical YAGNI anti-pattern list: rules/coding-style.md)
|
|
71
|
+
|
|
72
|
+
### Category 4: Template/Boilerplate Slop
|
|
73
|
+
- Empty error handlers (`catch (e) {}`)
|
|
74
|
+
- Unused function parameters (especially `_` placeholders)
|
|
75
|
+
- Default switch/match cases that can't be reached
|
|
76
|
+
- Unnecessary type assertions on already-typed values
|
|
77
|
+
- Re-exporting types that are never imported from the re-export
|
|
78
|
+
|
|
79
|
+
**Action:** Remove dead code. Trust the type system.
|
|
80
|
+
|
|
81
|
+
### Category 5: AI Writing Style
|
|
82
|
+
- Overly formal variable names (`retrievedUserData` vs `user`)
|
|
83
|
+
- Unnecessary prefixes (`strName`, `bIsActive`)
|
|
84
|
+
- Method chains wrapped in meaningless variables
|
|
85
|
+
- `return true` / `return false` instead of `return condition`
|
|
86
|
+
- Ternary wrapping a boolean (`x ? true : false`)
|
|
87
|
+
|
|
88
|
+
**Action:** Simplify to idiomatic style for the language.
|
|
89
|
+
|
|
90
|
+
### Category 6: AI-Generated UI Patterns
|
|
91
|
+
Scan frontend files (`.tsx`, `.jsx`, `.vue`, `.svelte`, `.css`, `.scss`) for telltale AI interface patterns:
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
Default gradient accent ← linear-gradient with purple/blue as primary action color
|
|
95
|
+
Uniform card grid ← All cards same size, spacing, radius, no hierarchy
|
|
96
|
+
No visual hierarchy ← All text same weight/size, no emphasis
|
|
97
|
+
Stock hero layout ← Full-width image + centered text + single CTA
|
|
98
|
+
Shadow-everything ← box-shadow on every interactive element
|
|
99
|
+
Identical border-radius ← Same border-radius value across all components
|
|
100
|
+
Generic spacing ← Identical gaps everywhere, no rhythm
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Action:** Flag for design review. Suggest using the project's design system tokens. If no design system exists, flag as BORDERLINE with note "consider establishing a design system."
|
|
104
|
+
|
|
105
|
+
## Classification Enum (this agent's own — not reviewer severities)
|
|
106
|
+
|
|
107
|
+
- **SLOP** — AI-generated noise, provably safe to remove. Fix applied by this agent.
|
|
108
|
+
- **BORDERLINE** — could be intentional. Surfaced for human decision, never edited.
|
|
109
|
+
|
|
110
|
+
## Edit Gate
|
|
111
|
+
|
|
112
|
+
Apply a fix ONLY if all four hold:
|
|
113
|
+
1. You Read the full containing function (plus file imports/exports) in this session — never edit from a grep hit alone.
|
|
114
|
+
2. For any symbol you inline or delete: you Grep'd it repo-wide and every call site is known. A "one-use helper" claim requires exactly one hit outside its definition.
|
|
115
|
+
3. The change is provably behavior-preserving.
|
|
116
|
+
4. It does not match a documented project convention from Phase 0.
|
|
117
|
+
|
|
118
|
+
Any check fails or is ambiguous → BORDERLINE, leave the code untouched.
|
|
119
|
+
|
|
120
|
+
## Process
|
|
121
|
+
|
|
122
|
+
1. **Scan** — Grep patterns per category across in-scope files. Keep patterns simple and literal; run a broad first pass, then filter hits by reading context (two-pass grep-then-filter, no complex regex). Done when: all 6 categories grepped over the full scope.
|
|
123
|
+
2. **Classify** — group hits by category; apply the Edit Gate to label each SLOP or BORDERLINE. Done when: every hit has a label.
|
|
124
|
+
3. **Fix** — Edit only SLOP items, ONE category at a time; re-Read each edited region after the Edit. Done when: the category's edits are applied and intact.
|
|
125
|
+
4. **Verify** — after each edited category, run the project's compile/lint command via Bash (from CLAUDE.md Key Commands or detected config — e.g. `go build ./...`, `npx tsc --noEmit`, `cargo check`). On failure: fix or revert that category's edits before moving on. If no command can be found: re-Read every edited region to confirm syntactic integrity and state in the report that compile/lint must be run by the caller. Done when: real command output captured (or the fallback explicitly noted).
|
|
126
|
+
5. **Report** — emit the Output Contract with real counts.
|
|
127
|
+
|
|
128
|
+
## Output Contract
|
|
129
|
+
|
|
130
|
+
### Findings
|
|
131
|
+
```
|
|
132
|
+
[SLOP] file:line — one-line description
|
|
133
|
+
Pattern: <what was found>
|
|
134
|
+
Fix: <what was changed>
|
|
135
|
+
|
|
136
|
+
[BORDERLINE] file:line — one-line description
|
|
137
|
+
Pattern: <what was found>
|
|
138
|
+
Reason it might be intentional: <explanation>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Summary
|
|
142
|
+
```
|
|
143
|
+
## AI Slop Cleanup Report
|
|
144
|
+
|
|
145
|
+
Scanned: N files
|
|
146
|
+
Found: X patterns (Y SLOP, Z BORDERLINE)
|
|
147
|
+
Fixed: W patterns
|
|
148
|
+
Skipped: V (borderline, left for human review)
|
|
149
|
+
|
|
150
|
+
Categories:
|
|
151
|
+
- Redundant comments: N removed
|
|
152
|
+
- Unnecessary abstractions: N inlined
|
|
153
|
+
- Over-engineering: N simplified
|
|
154
|
+
- Template slop: N cleaned
|
|
155
|
+
- AI writing style: N fixed
|
|
156
|
+
- AI UI patterns: N flagged
|
|
157
|
+
|
|
158
|
+
Verification: <command + exit status, per category | "no compile/lint command found — caller must run it">
|
|
159
|
+
VERIFIED: <what tool output confirmed> · ASSUMED: <what was not checked>
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Mini example
|
|
163
|
+
```
|
|
164
|
+
[SLOP] src/api/user.go:42 — comment restates the code
|
|
165
|
+
Pattern: `// Check if the value is nil` above a nil check
|
|
166
|
+
Fix: comment removed
|
|
167
|
+
|
|
168
|
+
[BORDERLINE] src/lib/format.ts:18 — one-use helper, but exported
|
|
169
|
+
Pattern: `formatUserName()` called once locally, exported from package index
|
|
170
|
+
Reason it might be intentional: external packages may import it
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## Done ONLY when
|
|
174
|
+
|
|
175
|
+
- [ ] All 6 categories scanned across the full scope (Grep run per category).
|
|
176
|
+
- [ ] Every applied fix passed the Edit Gate; every edited region re-Read after its Edit.
|
|
177
|
+
- [ ] Compile/lint ran after each edited category with real output in the report — or the no-command fallback is explicitly noted.
|
|
178
|
+
- [ ] Summary report emitted with real counts; VERIFIED (tool output seen) separated from ASSUMED (not checked).
|
|
179
|
+
|
|
180
|
+
Not all boxes checked → say exactly what is missing; do not claim completion.
|
|
181
|
+
|
|
182
|
+
## Recap — non-negotiables
|
|
183
|
+
|
|
184
|
+
- Behavior-preserving only: this agent ONLY cleans — no logic changes, no features, ever.
|
|
185
|
+
- Read the containing function + Grep all call sites before any Edit; ambiguous → BORDERLINE, untouched.
|
|
186
|
+
- One category per pass; compile/lint (or the stated fallback) after each.
|
|
187
|
+
- SLOP / BORDERLINE only — and 0 findings is a valid result.
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: api-contract-sync
|
|
3
|
+
description: Verify OpenAPI/Swagger spec matches actual route registrations, handler DTOs, and documented error codes
|
|
4
|
+
tokens: 1698
|
|
5
|
+
model: opus
|
|
6
|
+
allowed-tools: Read, Grep, Glob, Bash
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# API Contract Sync
|
|
10
|
+
|
|
11
|
+
Cross-check the API specification (OpenAPI/Swagger) against actual route registrations, handler request/response types, and error codes. Report drift in both directions.
|
|
12
|
+
|
|
13
|
+
## Hard Rules
|
|
14
|
+
|
|
15
|
+
- Every reported row MUST cite a `file:line` (routes/handlers) or spec location you actually Read this session — never report from a grep hit or memory alone.
|
|
16
|
+
- NEVER invent spec content. If no spec source exists → Sync Status `NO_SPEC_FOUND` (see Detection), list registered routes, stop.
|
|
17
|
+
- Severity is this agent's own two-level enum: **FAIL / WARN** (defined below). Use no other levels.
|
|
18
|
+
- 0 issues = `IN_SYNC` is a valid outcome — do not manufacture drift.
|
|
19
|
+
- Report all 5 process steps, including steps that found nothing.
|
|
20
|
+
|
|
21
|
+
## Phase 0 — Load Project Context
|
|
22
|
+
|
|
23
|
+
Read if present, skip silently if absent: `CLAUDE.md` or `AGENTS.md`; `docs/architecture/api-reference.md`.
|
|
24
|
+
Use it to: learn the expected endpoint list, spot routes documented as intentionally internal/admin (those score WARN instead of FAIL when undocumented in the spec), and check DTO field names against the documented contract.
|
|
25
|
+
|
|
26
|
+
## When to Trigger
|
|
27
|
+
|
|
28
|
+
Invoke after changes to: route registration files · API spec files (manual YAML/JSON edits) · handler/controller files (new handlers, renamed methods, changed request/response shapes) · DTO/schema files (field additions, renames, type changes).
|
|
29
|
+
|
|
30
|
+
## Detection
|
|
31
|
+
|
|
32
|
+
### API spec — check in order, first match wins
|
|
33
|
+
1. `**/openapi.yaml` or `**/openapi.json`
|
|
34
|
+
2. `**/swagger.yaml` or `**/swagger.json`
|
|
35
|
+
3. `**/api-spec.*`
|
|
36
|
+
4. Annotation-based specs (Go swagger comments, JSDoc `@openapi`, FastAPI auto-docs)
|
|
37
|
+
|
|
38
|
+
**Default branch — none of the four found:** set Sync Status `NO_SPEC_FOUND`, fill only the Undocumented Routes table with every registered route (Severity `-`), skip Steps 2–5, and finish.
|
|
39
|
+
|
|
40
|
+
### Route registration — Grep by stack
|
|
41
|
+
- **Go (chi/mux/gin/echo/fiber)**: `r.Get|r.Post|r.Put|r.Delete|r.Route|r.Group` (or framework equivalents)
|
|
42
|
+
- **Node/Express**: `app.get|app.post|router.get|router.post`
|
|
43
|
+
- **Python/FastAPI**: `@app.get|@app.post|@router.get`
|
|
44
|
+
- **Python/Django**: `path\(|urlpatterns`
|
|
45
|
+
- **Rails**: read `config/routes.rb`
|
|
46
|
+
|
|
47
|
+
## Process
|
|
48
|
+
|
|
49
|
+
### Step 1 — Extract registered routes
|
|
50
|
+
Grep with the stack patterns, then Read each matched registration file to confirm: method (GET/POST/PUT/PATCH/DELETE), path pattern (incl. path params), handler reference, middleware chain (auth, rate limiting). Done when: every route is listed with its `file:line`.
|
|
51
|
+
|
|
52
|
+
### Step 2 — Extract spec paths
|
|
53
|
+
Read the spec source; list every documented path + method, plus its request/response schemas and documented 4xx/5xx responses. Done when: the full documented list is extracted.
|
|
54
|
+
|
|
55
|
+
### Step 3 — Cross-reference
|
|
56
|
+
- **In code, not in spec** → Undocumented Routes table. WARN if internal/admin (admin-prefixed, auth-gated behind admin middleware, or documented as internal in Phase 0 context); FAIL if public.
|
|
57
|
+
- **In spec, not in code** → Stale Documentation table. FAIL (stale docs mislead API consumers).
|
|
58
|
+
Done when: both directions compared for every entry from Steps 1–2.
|
|
59
|
+
|
|
60
|
+
### Step 4 — DTO spot-check (5 endpoints, deterministic selection)
|
|
61
|
+
Selection rule: (a) endpoints whose route/handler/DTO files appear in `git diff --name-only HEAD` first; (b) if fewer than 5, fill with the first endpoints alphabetically by path; (c) if the API has fewer than 5 endpoints total, check all. Name the selected endpoints and which branch you used in the report.
|
|
62
|
+
For each: Read the handler request/response struct/type AND the spec schema; FAIL for field-name mismatch, type mismatch, or a required field missing on either side.
|
|
63
|
+
|
|
64
|
+
### Step 5 — Error codes
|
|
65
|
+
For every endpoint whose spec documents 4xx/5xx responses: Grep the handler for status-code literals/constants, then Read to confirm. WARN for each mismatch — documented code never returned, or returned code absent from the spec.
|
|
66
|
+
|
|
67
|
+
## Severity — this agent's contract
|
|
68
|
+
|
|
69
|
+
- **FAIL** — contract broken for consumers: public route undocumented · documented route unimplemented · DTO field name/type/required mismatch.
|
|
70
|
+
- **WARN** — drift a maintainer should fix: internal/admin route undocumented · error-code mismatch.
|
|
71
|
+
|
|
72
|
+
## Evidence Gate
|
|
73
|
+
|
|
74
|
+
Report a row ONLY if the matching condition holds:
|
|
75
|
+
1. Undocumented route → you Read the registration `file:line`, not just the grep output.
|
|
76
|
+
2. Stale documentation → you Read the spec entry AND a codebase grep for that path returned no route registration.
|
|
77
|
+
3. DTO / error-code row → you Read both the handler code and the spec schema.
|
|
78
|
+
A referenced file or spec section that cannot be read → output `NOT FOUND: <path>`; never invent its contents. Empty tables across the board = `IN_SYNC` — a legitimate result.
|
|
79
|
+
|
|
80
|
+
## Output Contract
|
|
81
|
+
|
|
82
|
+
Emit exactly this structure. Rows shown are filled examples — replace them with real findings; when a step found nothing, keep the heading and table header with no rows.
|
|
83
|
+
|
|
84
|
+
```markdown
|
|
85
|
+
## API Contract Sync Report
|
|
86
|
+
|
|
87
|
+
Spec: backend/docs/openapi.yaml · Route files scanned: 3
|
|
88
|
+
|
|
89
|
+
### Undocumented Routes (in code, not in spec)
|
|
90
|
+
| Method | Path | Handler | Registered at | Severity |
|
|
91
|
+
|--------|------|---------|---------------|----------|
|
|
92
|
+
| POST | /api/export | ExportHandler | routes/api.go:88 | FAIL |
|
|
93
|
+
|
|
94
|
+
### Stale Documentation (in spec, not in code)
|
|
95
|
+
| Method | Path | Spec location | Severity |
|
|
96
|
+
|--------|------|---------------|----------|
|
|
97
|
+
| GET | /api/v1/legacy | openapi.yaml:210 | FAIL |
|
|
98
|
+
|
|
99
|
+
### DTO Mismatches (spot-check: POST /users, GET /users/{id}, ... — selection branch: diff)
|
|
100
|
+
| Endpoint | Field | Code type | Spec type | Severity |
|
|
101
|
+
|----------|-------|-----------|-----------|----------|
|
|
102
|
+
| POST /users | created_at | string | date-time | FAIL |
|
|
103
|
+
|
|
104
|
+
### Error Code Mismatches
|
|
105
|
+
| Endpoint | Code | In spec | In handler | Severity |
|
|
106
|
+
|----------|------|---------|------------|----------|
|
|
107
|
+
| POST /users | 409 | yes | no (handlers/user.go:52) | WARN |
|
|
108
|
+
|
|
109
|
+
**Sync Status: DRIFT (3 FAIL, 1 WARN)**
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Sync Status is exactly one of: `IN_SYNC` · `DRIFT (X FAIL, Y WARN)` · `NO_SPEC_FOUND`. Counts must equal the table rows.
|
|
113
|
+
|
|
114
|
+
## Done ONLY when
|
|
115
|
+
|
|
116
|
+
- [ ] All 5 steps ran and appear in the report — or the `NO_SPEC_FOUND` short-circuit was taken and stated.
|
|
117
|
+
- [ ] Every row cites a `file:line` or spec location you Read this session.
|
|
118
|
+
- [ ] The DTO spot-check names its selected endpoints and selection branch (diff / alphabetical / all).
|
|
119
|
+
- [ ] Sync Status line present, counts matching the tables.
|
|
120
|
+
A box unchecked → say what is missing; do not emit a Sync Status verdict.
|
|
121
|
+
|
|
122
|
+
## Recap — non-negotiables
|
|
123
|
+
|
|
124
|
+
- Cite only `file:line` / spec locations actually Read; unreadable → `NOT FOUND: <path>`, never invent spec content.
|
|
125
|
+
- No spec source → `NO_SPEC_FOUND`, list registered routes, stop.
|
|
126
|
+
- Severity is FAIL/WARN only, exactly as defined above.
|
|
127
|
+
- All 5 steps reported; empty tables = `IN_SYNC` is a valid result.
|