@haposoft/cafekit 0.16.0-rc.8 → 0.16.1
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/README.md +117 -28
- package/bin/__tests__/codex-hooks-ownership.test.js +239 -0
- package/bin/__tests__/codex-hooks.test.js +175 -0
- package/bin/__tests__/codex-native.test.js +1882 -70
- package/bin/__tests__/develop-contract.test.js +442 -23
- package/bin/__tests__/grok-envelope.test.js +271 -0
- package/bin/__tests__/grok-platform.test.js +133 -0
- package/bin/__tests__/hook-payload.test.js +194 -0
- package/bin/__tests__/installer-safety.test.js +3 -3
- package/bin/__tests__/omp-bridge.test.js +168 -0
- package/bin/__tests__/omp-hooks.test.js +178 -0
- package/bin/__tests__/omp-runtime.test.js +150 -0
- package/bin/__tests__/optional-skill-inventory.test.js +249 -0
- package/bin/__tests__/output-styles.test.js +214 -0
- package/bin/__tests__/package-inventory.test.js +1735 -98
- package/bin/__tests__/runtime-dir.test.js +158 -0
- package/bin/__tests__/runtime-schema.test.js +113 -0
- package/bin/__tests__/secret-output-guardrail.test.js +122 -0
- package/bin/__tests__/skill-routing-source.test.js +172 -0
- package/bin/__tests__/specs-v2-execution-closeout.test.js +28 -1
- package/bin/install.js +15 -5
- package/bin/lib/codex-install.js +170 -5
- package/bin/lib/context.js +64 -3
- package/bin/lib/i18n.js +15 -36
- package/bin/lib/skill-deps.js +5 -5
- package/bin/phases/claude-runtime.js +23 -0
- package/bin/phases/claude-settings.js +8 -0
- package/bin/phases/codex-hooks.js +156 -0
- package/bin/phases/codex-runtime.js +29 -38
- package/bin/phases/copy-payload.js +15 -2
- package/bin/phases/omp-runtime.js +140 -0
- package/bin/phases/root-config.js +3 -0
- package/bin/phases/select-platform.js +22 -1
- package/bin/phases/select-skill-bundles.js +96 -0
- package/bin/phases/skill-inventory.js +71 -0
- package/bin/phases/skills-setup.js +9 -2
- package/bin/phases/summary.js +0 -4
- package/bin/phases/write-metadata.js +8 -5
- package/package.json +8 -2
- package/src/claude/CLAUDE.md +3 -3
- package/src/claude/agents/brainstormer.md +52 -69
- package/src/claude/agents/code-auditor.md +32 -14
- package/src/claude/agents/debugger.md +35 -20
- package/src/claude/agents/deployer.md +12 -5
- package/src/claude/agents/docs-keeper.md +11 -1
- package/src/claude/agents/implementer.md +25 -13
- package/src/claude/agents/inspector.md +6 -3
- package/src/claude/agents/project-manager.md +1 -1
- package/src/claude/agents/researcher.md +26 -55
- package/src/claude/agents/spec-maker.md +12 -7
- package/src/claude/agents/strategist.md +52 -0
- package/src/claude/agents/test-runner.md +117 -132
- package/src/claude/agents/ui-ux-designer.md +1 -1
- package/src/claude/hooks/__tests__/fixtures/statusline-default.golden +1 -0
- package/src/claude/hooks/__tests__/precompact.test.js +158 -0
- package/src/claude/hooks/__tests__/semantic-review-authority.test.js +2 -0
- package/src/claude/hooks/__tests__/spec-gate.test.js +348 -3
- package/src/claude/hooks/__tests__/state.test.js +7 -0
- package/src/claude/hooks/__tests__/statusline.test.js +196 -0
- package/src/claude/hooks/agent.cjs +13 -8
- package/src/claude/hooks/completion-authority.cjs +10 -4
- package/src/claude/hooks/docs-sync.cjs +14 -11
- package/src/claude/hooks/inspect-block.cjs +28 -8
- package/src/claude/hooks/lib/config.cjs +8 -2
- package/src/claude/hooks/lib/counter.cjs +7 -5
- package/src/claude/hooks/lib/hook-payload.cjs +160 -0
- package/src/claude/hooks/lib/hook-state-dir.cjs +39 -0
- package/src/claude/hooks/lib/runtime-dir.cjs +49 -0
- package/src/claude/hooks/lib/secret-keywords.cjs +42 -0
- package/src/claude/hooks/precompact.cjs +106 -0
- package/src/claude/hooks/privacy-block.cjs +4 -2
- package/src/claude/hooks/rules.cjs +5 -3
- package/src/claude/hooks/secret-output-guardrail.cjs +44 -0
- package/src/claude/hooks/semantic-review-authority.cjs +6 -4
- package/src/claude/hooks/session.cjs +37 -9
- package/src/claude/hooks/spec-gate.cjs +21 -11
- package/src/claude/hooks/spec-state.cjs +11 -7
- package/src/claude/hooks/state.cjs +7 -5
- package/src/claude/hooks/task-scaffold-guard.cjs +30 -9
- package/src/claude/hooks/usage.cjs +6 -5
- package/src/claude/migration-manifest.json +31 -15
- package/src/claude/output-styles/coding-level-0-eli5.md +103 -0
- package/src/claude/output-styles/coding-level-1-junior.md +124 -0
- package/src/claude/output-styles/coding-level-2-mid.md +146 -0
- package/src/claude/output-styles/coding-level-3-senior.md +148 -0
- package/src/claude/output-styles/coding-level-4-lead.md +159 -0
- package/src/claude/output-styles/coding-level-5-god.md +91 -0
- package/src/claude/references/debugger/core-philosophy.md +5 -3
- package/src/claude/references/debugger/frontend-verification.md +2 -2
- package/src/claude/references/debugger/log-ci-analysis.md +13 -1
- package/src/claude/references/debugger/parallel-agent-hydration.md +19 -34
- package/src/claude/references/debugger/performance-diagnostics.md +2 -2
- package/src/claude/references/debugger/root-cause-tracing.md +37 -6
- package/src/claude/references/debugger/side-effect-gate.md +3 -1
- package/src/claude/references/debugger/verification-protocol.md +13 -12
- package/src/claude/rules/orchestrator.md +7 -1
- package/src/claude/rules/process-management.md +39 -0
- package/src/claude/rules/review-audit-self-decision.md +48 -0
- package/src/claude/rules/skill-domain-routing.md +26 -24
- package/src/claude/rules/skill-workflow-routing.md +22 -14
- package/src/claude/rules/state-sync.md +7 -1
- package/src/claude/rules/workflow.md +5 -3
- package/src/claude/runtime.json +1 -0
- package/src/claude/runtime.schema.json +205 -0
- package/src/claude/scripts/generate-skill-catalog.cjs +156 -122
- package/src/claude/scripts/provenance.cjs +29 -9
- package/src/claude/scripts/spec-receipt.cjs +65 -4
- package/src/claude/scripts/workflow-policy.cjs +1 -1
- package/src/claude/settings/settings.json +16 -0
- package/src/claude/skills/agent-browser/SKILL.md +1 -1
- package/src/claude/skills/ai-multimodal/SKILL.md +1 -1
- package/src/claude/skills/brainstorm/SKILL.md +193 -172
- package/src/claude/skills/brainstorm/references/question-framework.md +105 -167
- package/src/claude/skills/chrome-devtools/SKILL.md +1 -1
- package/src/claude/skills/code-review/SKILL.md +43 -25
- package/src/claude/skills/code-review/references/spec-compliance-review.md +3 -4
- package/src/claude/skills/code-review/references/verification-gate.md +1 -1
- package/src/claude/skills/debug/SKILL.md +48 -19
- package/src/claude/skills/delegate/SKILL.md +1 -1
- package/src/claude/skills/develop/SKILL.md +92 -65
- package/src/claude/skills/develop/references/parallel-waves.md +36 -63
- package/src/claude/skills/develop/references/quality-gate.md +31 -4
- package/src/claude/skills/develop/references/subagent-patterns.md +21 -7
- package/src/claude/skills/docs/SKILL.md +42 -23
- package/src/claude/skills/docs/references/init-workflow.md +4 -4
- package/src/claude/skills/docs/references/reconstruct-workflow.md +6 -6
- package/src/claude/skills/docs/references/standard-docs-workflow.md +6 -2
- package/src/claude/skills/docs/references/summarize-workflow.md +2 -2
- package/src/claude/skills/docs/references/update-workflow.md +9 -7
- package/src/claude/skills/docs/templates/requirements-as-is.md +1 -1
- package/src/claude/skills/docx/SKILL.md +1 -1
- package/src/claude/skills/git/SKILL.md +1 -1
- package/src/claude/skills/git/references/commit-protocols.md +1 -1
- package/src/claude/skills/git/references/finish-branch.md +1 -1
- package/src/claude/skills/hotfix/SKILL.md +159 -170
- package/src/claude/skills/hotfix/references/diagnosis-protocol.md +14 -9
- package/src/claude/skills/hotfix/references/parallel-patterns.md +27 -13
- package/src/claude/skills/hotfix/references/prevention-gate.md +5 -0
- package/src/claude/skills/hotfix/references/review-cycle.md +21 -15
- package/src/claude/skills/hotfix/references/workflow-specialized.md +53 -21
- package/src/claude/skills/inspect/SKILL.md +55 -46
- package/src/claude/skills/inspect/references/internal-inspection.md +21 -5
- package/src/claude/skills/loop/SKILL.md +114 -0
- package/src/claude/skills/loop/references/bounded-loop-protocol.md +104 -0
- package/src/claude/skills/loop/references/metric-and-guard-contract.md +76 -0
- package/src/claude/skills/pdf/SKILL.md +1 -1
- package/src/claude/skills/pptx/SKILL.md +1 -1
- package/src/claude/skills/question/SKILL.md +16 -13
- package/src/claude/skills/research/SKILL.md +70 -43
- package/src/claude/skills/route/SKILL.md +94 -0
- package/src/claude/skills/route/references/agent-timing.md +46 -0
- package/src/claude/skills/route/references/chaining-patterns.md +53 -0
- package/src/claude/skills/route/references/task-taxonomy.md +48 -0
- package/src/claude/skills/specs/SKILL.md +51 -71
- package/src/claude/skills/specs/references/review.md +11 -8
- package/src/claude/skills/specs/references/templates.md +34 -18
- package/src/claude/skills/specs/templates/requirements-init.md +1 -1
- package/src/claude/skills/specs/templates/research.md +2 -2
- package/src/claude/skills/sync/SKILL.md +6 -6
- package/src/claude/skills/sync/references/sync-protocols.md +1 -1
- package/src/claude/skills/test/SKILL.md +120 -120
- package/src/claude/skills/test/references/execution-strategy.md +208 -361
- package/src/claude/skills/test/references/failure-triage.md +55 -121
- package/src/claude/skills/test/references/test-memory.md +20 -34
- package/src/claude/skills/ui-ux-pro-max/SKILL.md +1 -1
- package/src/claude/skills/web-testing/SKILL.md +1 -1
- package/src/claude/skills/xlsx/SKILL.md +1 -1
- package/src/claude/status.cjs +135 -33
- package/src/codex/AGENTS.md +14 -4
- package/src/codex/hooks/docs-sync.cjs +8 -3
- package/src/codex/hooks/lib/hook-context.cjs +18 -4
- package/src/codex/hooks/rules.cjs +29 -1
- package/src/codex/hooks/secret-output-guardrail.cjs +30 -0
- package/src/codex/hooks/spec-gate.cjs +3 -8
- package/src/codex/hooks/spec-state.cjs +3 -2
- package/src/codex/hooks.json +5 -0
- package/src/codex/rules/state-sync.md +7 -1
- package/src/codex/runtime.json +2 -0
- package/src/common/.env.example +1 -1
- package/src/omp/extensions/cafekit-bridge.mjs +233 -0
- package/src/omp/hooks/privacy-block.cjs +250 -0
- package/src/omp/runtime.json +33 -0
- package/bin/lib/rtk-run.js +0 -28
- package/bin/phases/setup-rtk.js +0 -159
- package/src/claude/skills/backend-development/SKILL.md +0 -101
- package/src/claude/skills/backend-development/references/backend-api-design.md +0 -495
- package/src/claude/skills/backend-development/references/backend-architecture.md +0 -454
- package/src/claude/skills/backend-development/references/backend-authentication.md +0 -338
- package/src/claude/skills/backend-development/references/backend-code-quality.md +0 -659
- package/src/claude/skills/backend-development/references/backend-debugging.md +0 -904
- package/src/claude/skills/backend-development/references/backend-devops.md +0 -491
- package/src/claude/skills/backend-development/references/backend-mindset.md +0 -387
- package/src/claude/skills/backend-development/references/backend-performance.md +0 -397
- package/src/claude/skills/backend-development/references/backend-security.md +0 -342
- package/src/claude/skills/backend-development/references/backend-technologies.md +0 -256
- package/src/claude/skills/backend-development/references/backend-testing.md +0 -429
- package/src/claude/skills/devops/.env.example +0 -76
- package/src/claude/skills/devops/SKILL.md +0 -102
- package/src/claude/skills/devops/references/browser-rendering.md +0 -305
- package/src/claude/skills/devops/references/cloudflare-d1-kv.md +0 -123
- package/src/claude/skills/devops/references/cloudflare-platform.md +0 -271
- package/src/claude/skills/devops/references/cloudflare-r2-storage.md +0 -280
- package/src/claude/skills/devops/references/cloudflare-workers-advanced.md +0 -312
- package/src/claude/skills/devops/references/cloudflare-workers-apis.md +0 -309
- package/src/claude/skills/devops/references/cloudflare-workers-basics.md +0 -418
- package/src/claude/skills/devops/references/docker-basics.md +0 -297
- package/src/claude/skills/devops/references/docker-compose.md +0 -292
- package/src/claude/skills/devops/references/gcloud-platform.md +0 -297
- package/src/claude/skills/devops/references/gcloud-services.md +0 -304
- package/src/claude/skills/devops/references/kubernetes-basics.md +0 -95
- package/src/claude/skills/devops/references/kubernetes-helm-advanced.md +0 -70
- package/src/claude/skills/devops/references/kubernetes-helm.md +0 -81
- package/src/claude/skills/devops/references/kubernetes-kubectl.md +0 -74
- package/src/claude/skills/devops/references/kubernetes-security-advanced.md +0 -94
- package/src/claude/skills/devops/references/kubernetes-security.md +0 -89
- package/src/claude/skills/devops/references/kubernetes-troubleshooting-advanced.md +0 -74
- package/src/claude/skills/devops/references/kubernetes-troubleshooting.md +0 -49
- package/src/claude/skills/devops/references/kubernetes-workflows-advanced.md +0 -75
- package/src/claude/skills/devops/references/kubernetes-workflows.md +0 -76
- package/src/claude/skills/devops/scripts/cloudflare_deploy.py +0 -269
- package/src/claude/skills/devops/scripts/docker_optimize.py +0 -332
- package/src/claude/skills/devops/scripts/requirements.txt +0 -20
- package/src/claude/skills/devops/scripts/tests/requirements.txt +0 -3
- package/src/claude/skills/devops/scripts/tests/test_cloudflare_deploy.py +0 -285
- package/src/claude/skills/devops/scripts/tests/test_docker_optimize.py +0 -436
- package/src/claude/skills/frontend-design/SKILL.md +0 -135
- package/src/claude/skills/frontend-design/references/ai-multimodal-overview.md +0 -165
- package/src/claude/skills/frontend-design/references/analysis-best-practices.md +0 -80
- package/src/claude/skills/frontend-design/references/analysis-prompts.md +0 -141
- package/src/claude/skills/frontend-design/references/analysis-techniques.md +0 -118
- package/src/claude/skills/frontend-design/references/animejs.md +0 -396
- package/src/claude/skills/frontend-design/references/anti-slop-rules.md +0 -103
- package/src/claude/skills/frontend-design/references/asset-generation.md +0 -337
- package/src/claude/skills/frontend-design/references/bento-motion-engine.md +0 -142
- package/src/claude/skills/frontend-design/references/design-extraction-overview.md +0 -71
- package/src/claude/skills/frontend-design/references/extraction-best-practices.md +0 -141
- package/src/claude/skills/frontend-design/references/extraction-output-templates.md +0 -162
- package/src/claude/skills/frontend-design/references/extraction-prompts.md +0 -127
- package/src/claude/skills/frontend-design/references/magicui-components.md +0 -129
- package/src/claude/skills/frontend-design/references/performance-guardrails.md +0 -169
- package/src/claude/skills/frontend-design/references/premium-design-patterns.md +0 -93
- package/src/claude/skills/frontend-design/references/redesign-audit-checklist.md +0 -114
- package/src/claude/skills/frontend-design/references/technical-accessibility.md +0 -119
- package/src/claude/skills/frontend-design/references/technical-best-practices.md +0 -97
- package/src/claude/skills/frontend-design/references/technical-optimization.md +0 -44
- package/src/claude/skills/frontend-design/references/technical-overview.md +0 -90
- package/src/claude/skills/frontend-design/references/technical-workflows.md +0 -150
- package/src/claude/skills/frontend-design/references/visual-analysis-overview.md +0 -95
- package/src/claude/skills/frontend-design/references/workflow-3d.md +0 -102
- package/src/claude/skills/frontend-design/references/workflow-describe.md +0 -87
- package/src/claude/skills/frontend-design/references/workflow-immersive.md +0 -87
- package/src/claude/skills/frontend-design/references/workflow-quick.md +0 -57
- package/src/claude/skills/frontend-design/references/workflow-screenshot.md +0 -63
- package/src/claude/skills/frontend-design/references/workflow-video.md +0 -74
- package/src/claude/skills/frontend-development/SKILL.md +0 -406
- package/src/claude/skills/frontend-development/resources/common-patterns.md +0 -331
- package/src/claude/skills/frontend-development/resources/complete-examples.md +0 -872
- package/src/claude/skills/frontend-development/resources/component-patterns.md +0 -502
- package/src/claude/skills/frontend-development/resources/data-fetching.md +0 -767
- package/src/claude/skills/frontend-development/resources/file-organization.md +0 -502
- package/src/claude/skills/frontend-development/resources/loading-and-error-states.md +0 -501
- package/src/claude/skills/frontend-development/resources/performance.md +0 -406
- package/src/claude/skills/frontend-development/resources/routing-guide.md +0 -364
- package/src/claude/skills/frontend-development/resources/styling-guide.md +0 -428
- package/src/claude/skills/frontend-development/resources/typescript-standards.md +0 -418
- package/src/claude/skills/mobile-development/SKILL.md +0 -218
- package/src/claude/skills/mobile-development/references/mobile-android.md +0 -604
- package/src/claude/skills/mobile-development/references/mobile-best-practices.md +0 -544
- package/src/claude/skills/mobile-development/references/mobile-debugging.md +0 -1089
- package/src/claude/skills/mobile-development/references/mobile-frameworks.md +0 -465
- package/src/claude/skills/mobile-development/references/mobile-ios.md +0 -496
- package/src/claude/skills/mobile-development/references/mobile-mindset.md +0 -542
- package/src/claude/skills/react-best-practices/AGENTS.md +0 -2249
- package/src/claude/skills/react-best-practices/README.md +0 -123
- package/src/claude/skills/react-best-practices/SKILL.md +0 -128
- package/src/claude/skills/react-best-practices/metadata.json +0 -15
- package/src/claude/skills/react-best-practices/rules/_sections.md +0 -46
- package/src/claude/skills/react-best-practices/rules/_template.md +0 -28
- package/src/claude/skills/react-best-practices/rules/advanced-event-handler-refs.md +0 -55
- package/src/claude/skills/react-best-practices/rules/advanced-use-latest.md +0 -49
- package/src/claude/skills/react-best-practices/rules/async-api-routes.md +0 -38
- package/src/claude/skills/react-best-practices/rules/async-defer-await.md +0 -80
- package/src/claude/skills/react-best-practices/rules/async-dependencies.md +0 -36
- package/src/claude/skills/react-best-practices/rules/async-parallel.md +0 -28
- package/src/claude/skills/react-best-practices/rules/async-suspense-boundaries.md +0 -99
- package/src/claude/skills/react-best-practices/rules/bundle-barrel-imports.md +0 -59
- package/src/claude/skills/react-best-practices/rules/bundle-conditional.md +0 -31
- package/src/claude/skills/react-best-practices/rules/bundle-defer-third-party.md +0 -49
- package/src/claude/skills/react-best-practices/rules/bundle-dynamic-imports.md +0 -35
- package/src/claude/skills/react-best-practices/rules/bundle-preload.md +0 -50
- package/src/claude/skills/react-best-practices/rules/client-event-listeners.md +0 -74
- package/src/claude/skills/react-best-practices/rules/client-swr-dedup.md +0 -56
- package/src/claude/skills/react-best-practices/rules/js-batch-dom-css.md +0 -82
- package/src/claude/skills/react-best-practices/rules/js-cache-function-results.md +0 -80
- package/src/claude/skills/react-best-practices/rules/js-cache-property-access.md +0 -28
- package/src/claude/skills/react-best-practices/rules/js-cache-storage.md +0 -70
- package/src/claude/skills/react-best-practices/rules/js-combine-iterations.md +0 -32
- package/src/claude/skills/react-best-practices/rules/js-early-exit.md +0 -50
- package/src/claude/skills/react-best-practices/rules/js-hoist-regexp.md +0 -45
- package/src/claude/skills/react-best-practices/rules/js-index-maps.md +0 -37
- package/src/claude/skills/react-best-practices/rules/js-length-check-first.md +0 -49
- package/src/claude/skills/react-best-practices/rules/js-min-max-loop.md +0 -82
- package/src/claude/skills/react-best-practices/rules/js-set-map-lookups.md +0 -24
- package/src/claude/skills/react-best-practices/rules/js-tosorted-immutable.md +0 -57
- package/src/claude/skills/react-best-practices/rules/rendering-activity.md +0 -26
- package/src/claude/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -47
- package/src/claude/skills/react-best-practices/rules/rendering-conditional-render.md +0 -40
- package/src/claude/skills/react-best-practices/rules/rendering-content-visibility.md +0 -38
- package/src/claude/skills/react-best-practices/rules/rendering-hoist-jsx.md +0 -46
- package/src/claude/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +0 -82
- package/src/claude/skills/react-best-practices/rules/rendering-svg-precision.md +0 -28
- package/src/claude/skills/react-best-practices/rules/rerender-defer-reads.md +0 -39
- package/src/claude/skills/react-best-practices/rules/rerender-dependencies.md +0 -45
- package/src/claude/skills/react-best-practices/rules/rerender-derived-state.md +0 -29
- package/src/claude/skills/react-best-practices/rules/rerender-functional-setstate.md +0 -74
- package/src/claude/skills/react-best-practices/rules/rerender-lazy-state-init.md +0 -58
- package/src/claude/skills/react-best-practices/rules/rerender-memo.md +0 -44
- package/src/claude/skills/react-best-practices/rules/rerender-transitions.md +0 -40
- package/src/claude/skills/react-best-practices/rules/server-after-nonblocking.md +0 -73
- package/src/claude/skills/react-best-practices/rules/server-cache-lru.md +0 -41
- package/src/claude/skills/react-best-practices/rules/server-cache-react.md +0 -26
- package/src/claude/skills/react-best-practices/rules/server-parallel-fetching.md +0 -79
- package/src/claude/skills/react-best-practices/rules/server-serialization.md +0 -38
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./runtime.schema.json",
|
|
3
|
+
"privacyBlock": true,
|
|
4
|
+
"inspect": {
|
|
5
|
+
"enabled": true
|
|
6
|
+
},
|
|
7
|
+
"docs": {
|
|
8
|
+
"maxLoc": 800
|
|
9
|
+
},
|
|
10
|
+
"paths": {
|
|
11
|
+
"docs": "docs",
|
|
12
|
+
"specs": "specs",
|
|
13
|
+
"plans": "plans"
|
|
14
|
+
},
|
|
15
|
+
"spec": {
|
|
16
|
+
"scaffold_guard": true,
|
|
17
|
+
"completion_gate": true,
|
|
18
|
+
"tollgate": true
|
|
19
|
+
},
|
|
20
|
+
"develop": {
|
|
21
|
+
"parallel": true
|
|
22
|
+
},
|
|
23
|
+
"locale": {
|
|
24
|
+
"thinkingLanguage": null,
|
|
25
|
+
"responseLanguage": null
|
|
26
|
+
},
|
|
27
|
+
"codingLevel": 1,
|
|
28
|
+
"usage": {
|
|
29
|
+
"enabled": false
|
|
30
|
+
},
|
|
31
|
+
"hooks": {},
|
|
32
|
+
"assertions": []
|
|
33
|
+
}
|
package/bin/lib/rtk-run.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Local captured-spawnSync helper for the rtk install phase.
|
|
3
|
-
*
|
|
4
|
-
* Why local: `lib/skill-deps.js` does not export a `run(cmd, args)` helper
|
|
5
|
-
* (it uses `runAsync` internally and never re-exports it). The rtk phase
|
|
6
|
-
* needs a synchronous, captured spawnSync (R2.2, R4.2) that returns
|
|
7
|
-
* `{ ok, status, stdout, stderr }` — same shape as `skill-deps.runAsync` but
|
|
8
|
-
* blocking. KISS: one 20-line module, no dependency on `lib/skill-deps.js`
|
|
9
|
-
* (which is skill-domain and not a generic command runner).
|
|
10
|
-
*
|
|
11
|
-
* @param {string} cmd
|
|
12
|
-
* @param {string[]} args
|
|
13
|
-
* @param {object} [opts] — passed through to spawnSync (e.g. { timeout })
|
|
14
|
-
* @returns {{ ok: boolean, status: number|null, stdout: string, stderr: string }}
|
|
15
|
-
*/
|
|
16
|
-
const { spawnSync } = require('child_process');
|
|
17
|
-
|
|
18
|
-
function run(cmd, args, opts = {}) {
|
|
19
|
-
const r = spawnSync(cmd, args, { encoding: 'utf8', ...opts });
|
|
20
|
-
return {
|
|
21
|
-
ok: !r.error && r.status === 0,
|
|
22
|
-
status: r.status,
|
|
23
|
-
stdout: r.stdout || '',
|
|
24
|
-
stderr: r.stderr || ''
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
module.exports = { run };
|
package/bin/phases/setup-rtk.js
DELETED
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* setup-rtk — opt-in install of the rtk token-saver and its Claude Code hook.
|
|
3
|
-
*
|
|
4
|
-
* Phase order (per specs/rtk-installer-integration/design.md):
|
|
5
|
-
* shouldRunRtk → ensureRtkBinary → `rtk init -g` → jq precheck → manifest
|
|
6
|
-
*
|
|
7
|
-
* R1-01 wired the consent gate (`shouldRunRtk`) and a thin `setupRtk` wrapper.
|
|
8
|
-
* R2-01 adds the orchestrator: `ensureRtkBinary` (detect/install), the
|
|
9
|
-
* `rtk init -g` hook registration, the `jq` precheck, and the manifest write.
|
|
10
|
-
*
|
|
11
|
-
* Non-fatal invariant (R2.7, R4.1): the entire `setupRtk` body is wrapped in
|
|
12
|
-
* try/catch. Any throw / non-zero exit / timeout is logged as a warning via
|
|
13
|
-
* `ctx.t('rtkFailed')` (with `{reason}` interpolation) and the cafekit
|
|
14
|
-
* install continues with its existing exit code. Mirrors the non-fatal
|
|
15
|
-
* contract of `phases/skills-setup.js`.
|
|
16
|
-
*
|
|
17
|
-
* Idempotency (R2.1, R2.6): re-runs see `hasCmd('rtk')` short-circuit the
|
|
18
|
-
* binary install path and re-invoke `rtk init -g` (rtk's own command handles
|
|
19
|
-
* its hook idempotency). The in-memory `ctx.rtkSetupRan` flag records that
|
|
20
|
-
* setup executed, so downstream consumers (R3-01 summary line) can read it.
|
|
21
|
-
*
|
|
22
|
-
* Cross-OS install (validated 2026-06-15): best-effort order
|
|
23
|
-
* (1) official prebuilt install script (pinned source)
|
|
24
|
-
* (2) `cargo install rtk` when `hasCmd('cargo')`
|
|
25
|
-
* (3) skip + warn
|
|
26
|
-
* covers macOS/Linux dev machines (cargo fall-through) and CI (skip+warn).
|
|
27
|
-
*
|
|
28
|
-
* No timeout for `cargo install rtk` (validated 2026-06-15): user accepted
|
|
29
|
-
* default `spawnSync` timeout; non-fatal guarantee holds via try/catch.
|
|
30
|
-
*/
|
|
31
|
-
|
|
32
|
-
const dep = require('../lib/skill-deps');
|
|
33
|
-
const rtkRun = require('../lib/rtk-run');
|
|
34
|
-
const { hasCmd } = dep;
|
|
35
|
-
const { run } = rtkRun;
|
|
36
|
-
|
|
37
|
-
const RTK_INIT_TIMEOUT_MS = 30_000; // `rtk init -g` is a fast global-hook write
|
|
38
|
-
const RTK_PREBUILT_TIMEOUT_MS = 120_000; // prebuilt install: curl download + sh pipe; slow networks need headroom
|
|
39
|
-
const RTK_PREBUILT_INSTALL_URL =
|
|
40
|
-
'https://raw.githubusercontent.com/rtk-ai/rtk/main/install.sh';
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Detect rtk binary, installing it if absent. Pure function over `ctx`.
|
|
44
|
-
*
|
|
45
|
-
* @param {object} ctx
|
|
46
|
-
* @returns {'present'|'installed'|'absent'}
|
|
47
|
-
*/
|
|
48
|
-
function ensureRtkBinary(ctx) {
|
|
49
|
-
if (hasCmd('rtk')) return 'present';
|
|
50
|
-
return installRtkBinary(ctx) ? 'installed' : 'absent';
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Best-effort rtk install. Tries the official prebuilt install script first
|
|
55
|
-
* (R5.2: surface source), then falls back to `cargo install rtk` if cargo is
|
|
56
|
-
* available, otherwise returns false (R2.3 non-fatal skip).
|
|
57
|
-
*
|
|
58
|
-
* @param {object} ctx
|
|
59
|
-
* @returns {boolean} true on success, false on failure or no method available
|
|
60
|
-
*/
|
|
61
|
-
function installRtkBinary(ctx) {
|
|
62
|
-
// Method 1: official prebuilt install script (pinned URL).
|
|
63
|
-
ctx.ui.info(ctx.t('rtkInstalling', { method: `prebuilt script (${RTK_PREBUILT_INSTALL_URL})` }));
|
|
64
|
-
const prebuilt = run('sh', ['-c', `curl -fsSL ${RTK_PREBUILT_INSTALL_URL} | sh`], {
|
|
65
|
-
timeout: RTK_PREBUILT_TIMEOUT_MS
|
|
66
|
-
});
|
|
67
|
-
if (prebuilt.ok) return true;
|
|
68
|
-
|
|
69
|
-
// Method 2: `cargo install rtk` if cargo is on PATH.
|
|
70
|
-
if (hasCmd('cargo')) {
|
|
71
|
-
ctx.ui.info(ctx.t('rtkInstalling', { method: 'cargo install rtk' }));
|
|
72
|
-
const cargo = run('cargo', ['install', 'rtk']);
|
|
73
|
-
if (cargo.ok) return true;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// No method succeeded.
|
|
77
|
-
return false;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Phase entrypoint. R2-01 wires the full install + hook + manifest pipeline.
|
|
82
|
-
* The consent gate is delegated to `shouldRunRtk(ctx)` (R1-01).
|
|
83
|
-
*
|
|
84
|
-
* @param {object} ctx
|
|
85
|
-
* @returns {Promise<object>} the same ctx
|
|
86
|
-
*/
|
|
87
|
-
async function setupRtk(ctx) {
|
|
88
|
-
if (!(await shouldRunRtk(ctx))) {
|
|
89
|
-
// Dry-run: enumerate the action set that would have run (validated 2026-06-15).
|
|
90
|
-
if (ctx.dryRun) {
|
|
91
|
-
ctx.ui.info(
|
|
92
|
-
'[dry-run] rtk setup skipped (would: detect rtk binary, install if missing via prebuilt/cargo, run rtk init -g, check jq)'
|
|
93
|
-
);
|
|
94
|
-
} else {
|
|
95
|
-
ctx.ui.info(ctx.t('rtkSkipped'));
|
|
96
|
-
}
|
|
97
|
-
return ctx;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
try {
|
|
101
|
-
// Step 1: ensure the binary is on PATH (R2.1, R2.2, R2.3).
|
|
102
|
-
const state = ensureRtkBinary(ctx);
|
|
103
|
-
if (state === 'absent') {
|
|
104
|
-
ctx.ui.warn(ctx.t('rtkInstallFailed'));
|
|
105
|
-
return ctx;
|
|
106
|
-
}
|
|
107
|
-
if (state === 'installed') {
|
|
108
|
-
ctx.ui.info(ctx.t('rtkInstalled'));
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
// Step 2: register rtk's official Claude Code hook via `rtk init -g` (R2.4).
|
|
112
|
-
const init = run('rtk', ['init', '-g'], { timeout: RTK_INIT_TIMEOUT_MS });
|
|
113
|
-
if (!init.ok) {
|
|
114
|
-
ctx.ui.warn(ctx.t('rtkInitFailed', { reason: init.stderr || `exit ${init.status}` }));
|
|
115
|
-
return ctx;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
// Step 3: `jq` precheck (R2.5). Warn if missing; do not fail.
|
|
119
|
-
if (!hasCmd('jq')) {
|
|
120
|
-
ctx.ui.warn(ctx.t('rtkNeedsJq'));
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
// Step 4: record the action (R2.6, idempotency). In-memory flag — re-runs
|
|
124
|
-
// observe `hasCmd('rtk')` short-circuit and re-invoke `rtk init -g`,
|
|
125
|
-
// which is itself idempotent. R3-01 reads this flag for the summary line.
|
|
126
|
-
ctx.rtkSetupRan = true;
|
|
127
|
-
return ctx;
|
|
128
|
-
} catch (err) {
|
|
129
|
-
// Non-fatal boundary: any unexpected throw becomes a warning, the
|
|
130
|
-
// installer continues (R2.7, R4.1).
|
|
131
|
-
ctx.ui.warn(ctx.t('rtkFailed', { reason: (err && err.message) || String(err) }));
|
|
132
|
-
return ctx;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* Decision matrix for whether the rtk setup phase should run. R1-01.
|
|
138
|
-
*
|
|
139
|
-
* 1. --dry-run → false (R1.4)
|
|
140
|
-
* 2. ctx.options.withRtk === true → true (R1.1)
|
|
141
|
-
* 3. !ctx.interactive → false (R1.3)
|
|
142
|
-
* 4. interactive confirm resolves true → true (R1.2)
|
|
143
|
-
* 5. interactive confirm resolves false → false (R1.2)
|
|
144
|
-
*
|
|
145
|
-
* @param {object} ctx
|
|
146
|
-
* @returns {Promise<boolean>}
|
|
147
|
-
*/
|
|
148
|
-
async function shouldRunRtk(ctx) {
|
|
149
|
-
if (ctx.dryRun) return false;
|
|
150
|
-
if (ctx.options.withRtk) return true;
|
|
151
|
-
if (!ctx.interactive) return false;
|
|
152
|
-
const yes = await ctx.ui.confirm(
|
|
153
|
-
{ message: ctx.t('rtkConfirm'), initialValue: false },
|
|
154
|
-
false
|
|
155
|
-
);
|
|
156
|
-
return yes === true;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
module.exports = { shouldRunRtk, setupRtk, ensureRtkBinary, installRtkBinary };
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: hapo:backend-development
|
|
3
|
-
description: Build backends with Node.js, Python, Go (NestJS, FastAPI, Django). Use for REST/GraphQL/gRPC APIs, auth (OAuth, JWT), databases, microservices, security (OWASP), Docker/K8s.
|
|
4
|
-
license: MIT
|
|
5
|
-
user-invocable: true
|
|
6
|
-
when_to_use: "Invoke to build or modify server APIs, services, and data layers."
|
|
7
|
-
category: backend
|
|
8
|
-
keywords: [backend, api, server, database]
|
|
9
|
-
argument-hint: "[framework] [task]"
|
|
10
|
-
metadata:
|
|
11
|
-
author: haposoft
|
|
12
|
-
version: "1.0.0"
|
|
13
|
-
---
|
|
14
|
-
# Backend Development Skill
|
|
15
|
-
|
|
16
|
-
Production-ready backend development with modern technologies, best practices, and proven patterns.
|
|
17
|
-
|
|
18
|
-
## When to Use
|
|
19
|
-
|
|
20
|
-
- Designing RESTful, GraphQL, or gRPC APIs
|
|
21
|
-
- Building authentication/authorization systems
|
|
22
|
-
- Optimizing database queries and schemas
|
|
23
|
-
- Implementing caching and performance optimization
|
|
24
|
-
- OWASP Top 10 security mitigation
|
|
25
|
-
- Designing scalable microservices
|
|
26
|
-
- Testing strategies (unit, integration, E2E)
|
|
27
|
-
- CI/CD pipelines and deployment
|
|
28
|
-
- Monitoring and debugging production systems
|
|
29
|
-
|
|
30
|
-
## Technology Selection Guide
|
|
31
|
-
|
|
32
|
-
**Languages:** Node.js/TypeScript (full-stack), Python (data/ML), Go (concurrency), Rust (performance)
|
|
33
|
-
**Frameworks:** NestJS, FastAPI, Django, Express, Gin
|
|
34
|
-
**Databases:** PostgreSQL (ACID), MongoDB (flexible schema), Redis (caching)
|
|
35
|
-
**APIs:** REST (simple), GraphQL (flexible), gRPC (performance)
|
|
36
|
-
|
|
37
|
-
See: `references/backend-technologies.md` for detailed comparisons
|
|
38
|
-
|
|
39
|
-
## Reference Navigation
|
|
40
|
-
|
|
41
|
-
**Core Technologies:**
|
|
42
|
-
- `backend-technologies.md` - Languages, frameworks, databases, message queues, ORMs
|
|
43
|
-
- `backend-api-design.md` - REST, GraphQL, gRPC patterns and best practices
|
|
44
|
-
|
|
45
|
-
**Security & Authentication:**
|
|
46
|
-
- `backend-security.md` - OWASP Top 10 2025, security best practices, input validation
|
|
47
|
-
- `backend-authentication.md` - OAuth 2.1, JWT, RBAC, MFA, session management
|
|
48
|
-
|
|
49
|
-
**Performance & Architecture:**
|
|
50
|
-
- `backend-performance.md` - Caching, query optimization, load balancing, scaling
|
|
51
|
-
- `backend-architecture.md` - Microservices, event-driven, CQRS, saga patterns
|
|
52
|
-
|
|
53
|
-
**Quality & Operations:**
|
|
54
|
-
- `backend-testing.md` - Testing strategies, frameworks, tools, CI/CD testing
|
|
55
|
-
- `backend-code-quality.md` - SOLID principles, design patterns, clean code
|
|
56
|
-
- `backend-devops.md` - Docker, Kubernetes, deployment strategies, monitoring
|
|
57
|
-
- `backend-debugging.md` - Debugging strategies, profiling, logging, production debugging
|
|
58
|
-
- `backend-mindset.md` - Problem-solving, architectural thinking, collaboration
|
|
59
|
-
|
|
60
|
-
## Key Best Practices (2025)
|
|
61
|
-
|
|
62
|
-
**Security:** Argon2id passwords, parameterized queries prevent SQL injection, OAuth 2.1 + PKCE, rate limiting, security headers
|
|
63
|
-
|
|
64
|
-
**Performance:** Redis caching reduces DB load, database indexing reduces I/O, CDN cuts latency, connection pooling
|
|
65
|
-
|
|
66
|
-
**Testing:** 70-20-10 pyramid (unit-integration-E2E), Vitest or Jest, contract testing for microservices, migration tests
|
|
67
|
-
|
|
68
|
-
**DevOps:** Blue-green/canary deployments, feature flags can reduce failures, Kubernetes, Prometheus/Grafana monitoring, OpenTelemetry tracing
|
|
69
|
-
|
|
70
|
-
## Quick Decision Matrix
|
|
71
|
-
|
|
72
|
-
| Need | Choose |
|
|
73
|
-
|------|--------|
|
|
74
|
-
| Fast development | Node.js + NestJS |
|
|
75
|
-
| Data/ML integration | Python + FastAPI |
|
|
76
|
-
| High concurrency | Go + Gin |
|
|
77
|
-
| Max performance | Rust + Axum |
|
|
78
|
-
| ACID transactions | PostgreSQL |
|
|
79
|
-
| Flexible schema | MongoDB |
|
|
80
|
-
| Caching | Redis |
|
|
81
|
-
| Internal services | gRPC |
|
|
82
|
-
| Public APIs | GraphQL/REST |
|
|
83
|
-
| Real-time events | Kafka |
|
|
84
|
-
|
|
85
|
-
## Implementation Checklist
|
|
86
|
-
|
|
87
|
-
**API:** Choose style → Design schema → Validate input → Add auth → Rate limiting → Documentation → Error handling
|
|
88
|
-
|
|
89
|
-
**Database:** Choose DB → Design schema → Create indexes → Connection pooling → Migration strategy → Backup/restore → Test performance
|
|
90
|
-
|
|
91
|
-
**Security:** OWASP Top 10 → Parameterized queries → OAuth 2.1 + JWT → Security headers → Rate limiting → Input validation → Argon2id passwords
|
|
92
|
-
|
|
93
|
-
**Testing:** Unit 70% → Integration 20% → E2E 10% → Load tests → Migration tests → Contract tests (microservices)
|
|
94
|
-
|
|
95
|
-
**Deployment:** Docker → CI/CD → Blue-green/canary → Feature flags → Monitoring → Logging → Health checks
|
|
96
|
-
|
|
97
|
-
## Resources
|
|
98
|
-
|
|
99
|
-
- OWASP Top 10: https://owasp.org/www-project-top-ten/
|
|
100
|
-
- OAuth 2.1: https://oauth.net/2.1/
|
|
101
|
-
- OpenTelemetry: https://opentelemetry.io/
|