mandrel 1.57.0
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/.agents/README.md +954 -0
- package/.agents/docs/SDLC.md +1420 -0
- package/.agents/docs/agentrc-reference.json +278 -0
- package/.agents/docs/configuration.md +1040 -0
- package/.agents/docs/workflows.md +59 -0
- package/.agents/instructions.md +384 -0
- package/.agents/personas/architect.md +107 -0
- package/.agents/personas/devops-engineer.md +36 -0
- package/.agents/personas/engineer-mobile.md +119 -0
- package/.agents/personas/engineer-web.md +110 -0
- package/.agents/personas/engineer.md +90 -0
- package/.agents/personas/product.md +88 -0
- package/.agents/personas/project-manager.md +110 -0
- package/.agents/personas/qa-engineer.md +91 -0
- package/.agents/personas/refactorer.md +110 -0
- package/.agents/personas/security-engineer.md +112 -0
- package/.agents/personas/sre.md +86 -0
- package/.agents/personas/technical-writer.md +100 -0
- package/.agents/personas/ux-designer.md +95 -0
- package/.agents/rules/api-conventions.md +75 -0
- package/.agents/rules/changelog-style.md +238 -0
- package/.agents/rules/gherkin-standards.md +146 -0
- package/.agents/rules/git-conventions.md +146 -0
- package/.agents/rules/orchestration-error-handling.md +35 -0
- package/.agents/rules/security-baseline.md +92 -0
- package/.agents/rules/shell-conventions.md +70 -0
- package/.agents/rules/test-seams.md +59 -0
- package/.agents/rules/testing-standards.md +177 -0
- package/.agents/runtime-deps.json +18 -0
- package/.agents/schemas/acceptance-eval-verdict.schema.json +93 -0
- package/.agents/schemas/agentrc.schema.json +1583 -0
- package/.agents/schemas/audit-results.schema.json +69 -0
- package/.agents/schemas/audit-rules.json +134 -0
- package/.agents/schemas/audit-rules.schema.json +69 -0
- package/.agents/schemas/baselines/baseline-envelope.schema.json +44 -0
- package/.agents/schemas/baselines/bundle-size.schema.json +47 -0
- package/.agents/schemas/baselines/coverage.schema.json +50 -0
- package/.agents/schemas/baselines/crap.schema.json +52 -0
- package/.agents/schemas/baselines/duplication.schema.json +62 -0
- package/.agents/schemas/baselines/lighthouse.schema.json +59 -0
- package/.agents/schemas/baselines/lint.schema.json +47 -0
- package/.agents/schemas/baselines/maintainability.schema.json +71 -0
- package/.agents/schemas/baselines/mutation.schema.json +52 -0
- package/.agents/schemas/crap-baseline.schema.json +57 -0
- package/.agents/schemas/crap-report.schema.json +102 -0
- package/.agents/schemas/dispatch-manifest.json +232 -0
- package/.agents/schemas/epic-perf-report.schema.json +89 -0
- package/.agents/schemas/epic-spec.schema.json +183 -0
- package/.agents/schemas/friction-event.schema.json +56 -0
- package/.agents/schemas/lifecycle/README.md +18 -0
- package/.agents/schemas/lifecycle/acceptance.reconcile.failed.schema.json +13 -0
- package/.agents/schemas/lifecycle/acceptance.reconcile.ok.schema.json +13 -0
- package/.agents/schemas/lifecycle/acceptance.reconcile.skipped.schema.json +13 -0
- package/.agents/schemas/lifecycle/acceptance.reconcile.start.schema.json +12 -0
- package/.agents/schemas/lifecycle/acceptance.reconcile.waived.schema.json +13 -0
- package/.agents/schemas/lifecycle/checkpoint.written.schema.json +13 -0
- package/.agents/schemas/lifecycle/close-validate.end.schema.json +18 -0
- package/.agents/schemas/lifecycle/close-validate.start.schema.json +13 -0
- package/.agents/schemas/lifecycle/code-review.end.schema.json +30 -0
- package/.agents/schemas/lifecycle/code-review.start.schema.json +12 -0
- package/.agents/schemas/lifecycle/epic.automerge.end.schema.json +14 -0
- package/.agents/schemas/lifecycle/epic.automerge.start.schema.json +13 -0
- package/.agents/schemas/lifecycle/epic.blocked.schema.json +13 -0
- package/.agents/schemas/lifecycle/epic.cleanup.end.schema.json +12 -0
- package/.agents/schemas/lifecycle/epic.cleanup.start.schema.json +12 -0
- package/.agents/schemas/lifecycle/epic.close.end.schema.json +12 -0
- package/.agents/schemas/lifecycle/epic.complete.schema.json +13 -0
- package/.agents/schemas/lifecycle/epic.finalize.end.schema.json +13 -0
- package/.agents/schemas/lifecycle/epic.finalize.start.schema.json +12 -0
- package/.agents/schemas/lifecycle/epic.merge.armed.schema.json +13 -0
- package/.agents/schemas/lifecycle/epic.merge.blocked.schema.json +14 -0
- package/.agents/schemas/lifecycle/epic.merge.confirmed.schema.json +17 -0
- package/.agents/schemas/lifecycle/epic.merge.ready.schema.json +15 -0
- package/.agents/schemas/lifecycle/epic.plan.end.schema.json +18 -0
- package/.agents/schemas/lifecycle/epic.plan.start.schema.json +12 -0
- package/.agents/schemas/lifecycle/epic.snapshot.end.schema.json +16 -0
- package/.agents/schemas/lifecycle/epic.snapshot.start.schema.json +12 -0
- package/.agents/schemas/lifecycle/epic.watch.end.schema.json +28 -0
- package/.agents/schemas/lifecycle/epic.watch.start.schema.json +16 -0
- package/.agents/schemas/lifecycle/intervention.recorded.schema.json +15 -0
- package/.agents/schemas/lifecycle/ledger-record.schema.json +59 -0
- package/.agents/schemas/lifecycle/notification.emitted.schema.json +18 -0
- package/.agents/schemas/lifecycle/pr.created.schema.json +14 -0
- package/.agents/schemas/lifecycle/retro.end.schema.json +16 -0
- package/.agents/schemas/lifecycle/retro.start.schema.json +12 -0
- package/.agents/schemas/lifecycle/story.blocked.schema.json +13 -0
- package/.agents/schemas/lifecycle/story.dispatch.end.schema.json +17 -0
- package/.agents/schemas/lifecycle/story.dispatch.start.schema.json +15 -0
- package/.agents/schemas/lifecycle/story.heartbeat.schema.json +20 -0
- package/.agents/schemas/lifecycle/story.merged.schema.json +13 -0
- package/.agents/schemas/mi-report.schema.json +58 -0
- package/.agents/schemas/model-attribution.schema.json +49 -0
- package/.agents/schemas/qa-finding.schema.json +133 -0
- package/.agents/schemas/qa-ledger.schema.json +89 -0
- package/.agents/schemas/risk-verdict.schema.json +53 -0
- package/.agents/schemas/signal-event.schema.json +58 -0
- package/.agents/schemas/skill.schema.json +31 -0
- package/.agents/schemas/skills-index.schema.json +81 -0
- package/.agents/schemas/story-perf-summary.schema.json +73 -0
- package/.agents/schemas/validation-evidence.schema.json +78 -0
- package/.agents/scripts/README.md +93 -0
- package/.agents/scripts/acceptance-eval.js +284 -0
- package/.agents/scripts/acceptance-spec-reconciler.js +556 -0
- package/.agents/scripts/agents-bootstrap-github.js +634 -0
- package/.agents/scripts/analyze-execution.js +369 -0
- package/.agents/scripts/assert-branch.js +83 -0
- package/.agents/scripts/audit-labels-bootstrap.js +253 -0
- package/.agents/scripts/audit-to-stories.js +257 -0
- package/.agents/scripts/bootstrap.js +1378 -0
- package/.agents/scripts/check-baselines.js +81 -0
- package/.agents/scripts/check-dead-exports.js +311 -0
- package/.agents/scripts/check-doc-links.js +401 -0
- package/.agents/scripts/check-gherkin-placeholders.js +663 -0
- package/.agents/scripts/check-lifecycle-doc-drift.js +402 -0
- package/.agents/scripts/check-lifecycle-lint.js +379 -0
- package/.agents/scripts/check-prepush-recovery.js +90 -0
- package/.agents/scripts/check-windows-git-perf.js +138 -0
- package/.agents/scripts/cleanup-repo-test-temp.js +67 -0
- package/.agents/scripts/coverage-capture.js +112 -0
- package/.agents/scripts/detect-merges.js +111 -0
- package/.agents/scripts/diagnose-friction.js +257 -0
- package/.agents/scripts/diagnose.js +240 -0
- package/.agents/scripts/dispatcher.js +295 -0
- package/.agents/scripts/drain-pending-cleanup.js +147 -0
- package/.agents/scripts/epic-audit-prepare.js +419 -0
- package/.agents/scripts/epic-audit-recheck.js +241 -0
- package/.agents/scripts/epic-deliver-note-intervention.js +192 -0
- package/.agents/scripts/epic-deliver-preflight.js +407 -0
- package/.agents/scripts/epic-deliver-prepare.js +383 -0
- package/.agents/scripts/epic-execute-record-wave.js +463 -0
- package/.agents/scripts/epic-plan-clarity.js +201 -0
- package/.agents/scripts/epic-plan-decompose.js +79 -0
- package/.agents/scripts/epic-plan-healthcheck.js +363 -0
- package/.agents/scripts/epic-plan-spec-validate.js +111 -0
- package/.agents/scripts/epic-plan-spec.js +198 -0
- package/.agents/scripts/epic-reconcile.js +637 -0
- package/.agents/scripts/evidence-gate.js +235 -0
- package/.agents/scripts/generate-config-docs.js +516 -0
- package/.agents/scripts/generate-lifecycle-docs.js +224 -0
- package/.agents/scripts/generate-skills-index.js +252 -0
- package/.agents/scripts/generate-workflows-doc.js +168 -0
- package/.agents/scripts/git-cleanup.js +124 -0
- package/.agents/scripts/git-pr-quality-gate.js +203 -0
- package/.agents/scripts/git-rebase-and-resolve.js +234 -0
- package/.agents/scripts/hierarchy-gate.js +176 -0
- package/.agents/scripts/hydrate-context.js +179 -0
- package/.agents/scripts/install-matrix-assert.js +282 -0
- package/.agents/scripts/lib/Graph.js +326 -0
- package/.agents/scripts/lib/ITicketingProvider.js +349 -0
- package/.agents/scripts/lib/Logger.js +194 -0
- package/.agents/scripts/lib/audit-suite/cli.js +64 -0
- package/.agents/scripts/lib/audit-suite/findings.js +164 -0
- package/.agents/scripts/lib/audit-suite/frontmatter-lint.js +32 -0
- package/.agents/scripts/lib/audit-suite/frontmatter.js +110 -0
- package/.agents/scripts/lib/audit-suite/index.js +22 -0
- package/.agents/scripts/lib/audit-suite/runner.js +233 -0
- package/.agents/scripts/lib/audit-suite/selector.js +235 -0
- package/.agents/scripts/lib/audit-suite/substitutions.js +124 -0
- package/.agents/scripts/lib/audit-suite/workflow-loader.js +49 -0
- package/.agents/scripts/lib/audit-to-stories/build-story-body.js +130 -0
- package/.agents/scripts/lib/audit-to-stories/dedupe-against-github.js +114 -0
- package/.agents/scripts/lib/audit-to-stories/finding-adapter.js +93 -0
- package/.agents/scripts/lib/audit-to-stories/group-findings.js +265 -0
- package/.agents/scripts/lib/audit-to-stories/parse-audit-md.js +246 -0
- package/.agents/scripts/lib/audit-to-stories/seed-epic-from-findings.js +160 -0
- package/.agents/scripts/lib/auto-refresh-baselines.js +308 -0
- package/.agents/scripts/lib/baseline-loader.js +0 -0
- package/.agents/scripts/lib/baseline-schema-registry.js +69 -0
- package/.agents/scripts/lib/baseline-snapshot.js +716 -0
- package/.agents/scripts/lib/baselines/component-matcher.js +21 -0
- package/.agents/scripts/lib/baselines/components.js +126 -0
- package/.agents/scripts/lib/baselines/diff-scope-cli.js +203 -0
- package/.agents/scripts/lib/baselines/duplication-scanner.js +220 -0
- package/.agents/scripts/lib/baselines/env-overrides.js +129 -0
- package/.agents/scripts/lib/baselines/envelope.js +368 -0
- package/.agents/scripts/lib/baselines/exit-codes.js +89 -0
- package/.agents/scripts/lib/baselines/git-base.js +0 -0
- package/.agents/scripts/lib/baselines/kernel.js +111 -0
- package/.agents/scripts/lib/baselines/kinds/_shared-metric.js +220 -0
- package/.agents/scripts/lib/baselines/kinds/bundle-size.js +157 -0
- package/.agents/scripts/lib/baselines/kinds/coverage.js +194 -0
- package/.agents/scripts/lib/baselines/kinds/crap.js +555 -0
- package/.agents/scripts/lib/baselines/kinds/duplication.js +197 -0
- package/.agents/scripts/lib/baselines/kinds/lighthouse.js +185 -0
- package/.agents/scripts/lib/baselines/kinds/lint.js +172 -0
- package/.agents/scripts/lib/baselines/kinds/maintainability.js +340 -0
- package/.agents/scripts/lib/baselines/kinds/mutation.js +153 -0
- package/.agents/scripts/lib/baselines/path-canon.js +279 -0
- package/.agents/scripts/lib/baselines/preview-gates.js +298 -0
- package/.agents/scripts/lib/baselines/reader.js +321 -0
- package/.agents/scripts/lib/baselines/refresh-service.js +733 -0
- package/.agents/scripts/lib/baselines/scope.js +291 -0
- package/.agents/scripts/lib/baselines/writer.js +312 -0
- package/.agents/scripts/lib/bdd-runner-detect.js +417 -0
- package/.agents/scripts/lib/bdd-scenario-scanner.js +310 -0
- package/.agents/scripts/lib/bootstrap/baselines-layout-migration.js +202 -0
- package/.agents/scripts/lib/bootstrap/branch-protection.js +222 -0
- package/.agents/scripts/lib/bootstrap/ci-workflow-template.js +171 -0
- package/.agents/scripts/lib/bootstrap/commit-push.js +146 -0
- package/.agents/scripts/lib/bootstrap/gh-list.js +153 -0
- package/.agents/scripts/lib/bootstrap/gh-preflight.js +306 -0
- package/.agents/scripts/lib/bootstrap/hitl-confirm.js +89 -0
- package/.agents/scripts/lib/bootstrap/install-ledger.js +174 -0
- package/.agents/scripts/lib/bootstrap/manifest.js +272 -0
- package/.agents/scripts/lib/bootstrap/merge-methods.js +108 -0
- package/.agents/scripts/lib/bootstrap/preflight.js +195 -0
- package/.agents/scripts/lib/bootstrap/project-bootstrap.js +801 -0
- package/.agents/scripts/lib/bootstrap/prompt.js +480 -0
- package/.agents/scripts/lib/bootstrap/quality-bootstrap.js +370 -0
- package/.agents/scripts/lib/bootstrap/summary.js +75 -0
- package/.agents/scripts/lib/bootstrap/workflow-audit.js +256 -0
- package/.agents/scripts/lib/branch-name-guard.js +98 -0
- package/.agents/scripts/lib/c8-cli-path.js +21 -0
- package/.agents/scripts/lib/changed-files.js +184 -0
- package/.agents/scripts/lib/checks/baseline-drift-main-checkout.js +104 -0
- package/.agents/scripts/lib/checks/core-bare-clean.js +48 -0
- package/.agents/scripts/lib/checks/epic-merge-lock-stale.js +54 -0
- package/.agents/scripts/lib/checks/index.js +288 -0
- package/.agents/scripts/lib/checks/push-hook-parity.js +106 -0
- package/.agents/scripts/lib/checks/stale-origin-epic.js +49 -0
- package/.agents/scripts/lib/checks/state.js +558 -0
- package/.agents/scripts/lib/checks/story-init-not-backgrounded.js +186 -0
- package/.agents/scripts/lib/checks/subagent-agent-tool-required.js +182 -0
- package/.agents/scripts/lib/checks/windows-coverage-noise-floor.js +92 -0
- package/.agents/scripts/lib/checks/worktree-bootstrap-env.js +81 -0
- package/.agents/scripts/lib/checks/worktree-residue-biome.js +55 -0
- package/.agents/scripts/lib/cli/parse-numeric.js +60 -0
- package/.agents/scripts/lib/cli/standard-args.js +351 -0
- package/.agents/scripts/lib/cli-args.js +286 -0
- package/.agents/scripts/lib/cli-utils.js +69 -0
- package/.agents/scripts/lib/close-validation/projections/head-sha.js +44 -0
- package/.agents/scripts/lib/close-validation/projections/inputs.js +86 -0
- package/.agents/scripts/lib/close-validation/projections/maintainability.js +286 -0
- package/.agents/scripts/lib/close-validation.js +897 -0
- package/.agents/scripts/lib/codebase-snapshot.js +513 -0
- package/.agents/scripts/lib/command-header.js +33 -0
- package/.agents/scripts/lib/config/acceptance-eval.js +95 -0
- package/.agents/scripts/lib/config/baselines.js +60 -0
- package/.agents/scripts/lib/config/ci.js +30 -0
- package/.agents/scripts/lib/config/commands.js +36 -0
- package/.agents/scripts/lib/config/defaults.js +119 -0
- package/.agents/scripts/lib/config/explain.js +348 -0
- package/.agents/scripts/lib/config/gates/bundle-size.schema.js +23 -0
- package/.agents/scripts/lib/config/gates/coverage.schema.js +18 -0
- package/.agents/scripts/lib/config/gates/crap.schema.js +33 -0
- package/.agents/scripts/lib/config/gates/duplication.schema.js +26 -0
- package/.agents/scripts/lib/config/gates/index.js +36 -0
- package/.agents/scripts/lib/config/gates/lighthouse.schema.js +23 -0
- package/.agents/scripts/lib/config/gates/lint.schema.js +9 -0
- package/.agents/scripts/lib/config/gates/maintainability.schema.js +20 -0
- package/.agents/scripts/lib/config/gates/mutation.schema.js +12 -0
- package/.agents/scripts/lib/config/gates/shared.js +117 -0
- package/.agents/scripts/lib/config/github.js +122 -0
- package/.agents/scripts/lib/config/lifecycle.js +40 -0
- package/.agents/scripts/lib/config/limits.js +211 -0
- package/.agents/scripts/lib/config/paths.js +73 -0
- package/.agents/scripts/lib/config/preflight.js +58 -0
- package/.agents/scripts/lib/config/quality.js +665 -0
- package/.agents/scripts/lib/config/retro.js +77 -0
- package/.agents/scripts/lib/config/runners.js +105 -0
- package/.agents/scripts/lib/config/runtime.js +167 -0
- package/.agents/scripts/lib/config/shared.js +46 -0
- package/.agents/scripts/lib/config/sync-agentrc.js +243 -0
- package/.agents/scripts/lib/config/temp-paths.js +373 -0
- package/.agents/scripts/lib/config/validate-orchestration.js +81 -0
- package/.agents/scripts/lib/config/worktree-isolation.js +80 -0
- package/.agents/scripts/lib/config-resolver.js +298 -0
- package/.agents/scripts/lib/config-schema-shared.js +32 -0
- package/.agents/scripts/lib/config-schema.js +20 -0
- package/.agents/scripts/lib/config-settings-schema-delivery.js +332 -0
- package/.agents/scripts/lib/config-settings-schema-quality.js +165 -0
- package/.agents/scripts/lib/config-settings-schema.js +420 -0
- package/.agents/scripts/lib/coverage-baseline.js +352 -0
- package/.agents/scripts/lib/coverage-capture.js +195 -0
- package/.agents/scripts/lib/coverage-utils.js +239 -0
- package/.agents/scripts/lib/cpu-pool.js +223 -0
- package/.agents/scripts/lib/crap-engine.js +119 -0
- package/.agents/scripts/lib/crap-utils.js +479 -0
- package/.agents/scripts/lib/degraded-mode.js +69 -0
- package/.agents/scripts/lib/dependency-parser.js +129 -0
- package/.agents/scripts/lib/duplicate-search.js +189 -0
- package/.agents/scripts/lib/dynamic-workflow/architecture-report-contract.js +70 -0
- package/.agents/scripts/lib/dynamic-workflow/audit-orchestrator.js +197 -0
- package/.agents/scripts/lib/dynamic-workflow/capability.js +396 -0
- package/.agents/scripts/lib/dynamic-workflow/clean-code-report-contract.js +80 -0
- package/.agents/scripts/lib/dynamic-workflow/performance-report-contract.js +72 -0
- package/.agents/scripts/lib/dynamic-workflow/quality-report-contract.js +90 -0
- package/.agents/scripts/lib/dynamic-workflow/report-contract-core.js +43 -0
- package/.agents/scripts/lib/dynamic-workflow/security-report-contract.js +83 -0
- package/.agents/scripts/lib/env-loader.js +52 -0
- package/.agents/scripts/lib/epic-merge-lock.js +239 -0
- package/.agents/scripts/lib/epic-plan-clarity.js +142 -0
- package/.agents/scripts/lib/epic-plan-ideation.js +228 -0
- package/.agents/scripts/lib/error-redactor.js +125 -0
- package/.agents/scripts/lib/errors/index.js +67 -0
- package/.agents/scripts/lib/feedback-loop/audit-results-graduator.js +230 -0
- package/.agents/scripts/lib/feedback-loop/code-review-graduator.js +207 -0
- package/.agents/scripts/lib/feedback-loop/graduator-core.js +421 -0
- package/.agents/scripts/lib/feedback-loop/memory-freshness.js +480 -0
- package/.agents/scripts/lib/feedback-loop/prior-feedback-fetcher.js +229 -0
- package/.agents/scripts/lib/findings/classify-finding.js +195 -0
- package/.agents/scripts/lib/findings/promote-finding.js +353 -0
- package/.agents/scripts/lib/findings/route-finding.js +283 -0
- package/.agents/scripts/lib/findings/semantic-issue-search.js +179 -0
- package/.agents/scripts/lib/findings/severity.js +102 -0
- package/.agents/scripts/lib/gates/baseline-store.js +106 -0
- package/.agents/scripts/lib/gates/friction.js +43 -0
- package/.agents/scripts/lib/gh-exec.js +553 -0
- package/.agents/scripts/lib/git/cached-fetch.js +0 -0
- package/.agents/scripts/lib/git/sync-from-base.js +162 -0
- package/.agents/scripts/lib/git-branch-cleanup.js +213 -0
- package/.agents/scripts/lib/git-branch-lifecycle.js +353 -0
- package/.agents/scripts/lib/git-merge-orchestrator.js +261 -0
- package/.agents/scripts/lib/git-utils.js +363 -0
- package/.agents/scripts/lib/github-url.js +29 -0
- package/.agents/scripts/lib/install-cmd-parser.js +51 -0
- package/.agents/scripts/lib/issue-link-parser.js +74 -0
- package/.agents/scripts/lib/json-utils.js +60 -0
- package/.agents/scripts/lib/label-constants.js +169 -0
- package/.agents/scripts/lib/label-taxonomy.js +200 -0
- package/.agents/scripts/lib/maintainability-engine.js +164 -0
- package/.agents/scripts/lib/maintainability-utils.js +343 -0
- package/.agents/scripts/lib/mandrel-catalog.js +170 -0
- package/.agents/scripts/lib/mutation/baseline-snapshot.js +238 -0
- package/.agents/scripts/lib/mutation/config-detector.js +119 -0
- package/.agents/scripts/lib/mutation/stryker-runner.js +306 -0
- package/.agents/scripts/lib/mutation/survivor-report.js +160 -0
- package/.agents/scripts/lib/notifications/notifier.js +75 -0
- package/.agents/scripts/lib/observability/active-story-env.js +182 -0
- package/.agents/scripts/lib/observability/baseline-refresh-rate.js +221 -0
- package/.agents/scripts/lib/observability/perf-aggregator.js +887 -0
- package/.agents/scripts/lib/observability/perf-report-readers.js +319 -0
- package/.agents/scripts/lib/observability/perf-report-render.js +182 -0
- package/.agents/scripts/lib/observability/signals-writer.js +296 -0
- package/.agents/scripts/lib/observability/source-classifier.js +103 -0
- package/.agents/scripts/lib/observability/tool-trace-hook.js +417 -0
- package/.agents/scripts/lib/onboard/detect-stack.js +300 -0
- package/.agents/scripts/lib/onboard/scaffold-docs.js +128 -0
- package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +173 -0
- package/.agents/scripts/lib/orchestration/cascade-grouping.js +275 -0
- package/.agents/scripts/lib/orchestration/check-baselines/phases/compare.js +131 -0
- package/.agents/scripts/lib/orchestration/check-baselines/phases/evaluate.js +80 -0
- package/.agents/scripts/lib/orchestration/check-baselines/phases/floors.js +132 -0
- package/.agents/scripts/lib/orchestration/check-baselines/phases/friction.js +142 -0
- package/.agents/scripts/lib/orchestration/check-baselines/phases/parse-args.js +149 -0
- package/.agents/scripts/lib/orchestration/check-baselines/phases/pipeline.js +158 -0
- package/.agents/scripts/lib/orchestration/check-baselines/phases/report.js +56 -0
- package/.agents/scripts/lib/orchestration/code-review.js +652 -0
- package/.agents/scripts/lib/orchestration/column-sync.js +286 -0
- package/.agents/scripts/lib/orchestration/context-envelope.js +280 -0
- package/.agents/scripts/lib/orchestration/context-hydration-engine.js +581 -0
- package/.agents/scripts/lib/orchestration/dependency-analyzer.js +88 -0
- package/.agents/scripts/lib/orchestration/detectors-phase.js +188 -0
- package/.agents/scripts/lib/orchestration/dispatch-engine.js +144 -0
- package/.agents/scripts/lib/orchestration/dispatch-pipeline.js +206 -0
- package/.agents/scripts/lib/orchestration/doc-reader.js +94 -0
- package/.agents/scripts/lib/orchestration/epic-cleanup.js +473 -0
- package/.agents/scripts/lib/orchestration/epic-deliver-lease-guard.js +310 -0
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/cli.js +167 -0
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/context.js +151 -0
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/creation.js +74 -0
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/dag.js +78 -0
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/diagnostics.js +72 -0
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/persist-helpers.js +155 -0
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/persist.js +321 -0
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/planning-artifacts.js +75 -0
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/reconcile-spawn.js +86 -0
- package/.agents/scripts/lib/orchestration/epic-plan-lease-guard.js +235 -0
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/authoring-context.js +197 -0
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/cli-args.js +48 -0
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/drain.js +94 -0
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/plan-epic.js +414 -0
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/prompts.js +55 -0
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/risk-verdict.js +105 -0
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/run-spec-phase.js +235 -0
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/spec-freshness.js +120 -0
- package/.agents/scripts/lib/orchestration/epic-plan-state-store.js +118 -0
- package/.agents/scripts/lib/orchestration/epic-run-state-store.js +295 -0
- package/.agents/scripts/lib/orchestration/epic-runner/concurrency-gate.js +186 -0
- package/.agents/scripts/lib/orchestration/epic-runner/deliver-phases.js +50 -0
- package/.agents/scripts/lib/orchestration/epic-runner/phases/build-wave-dag.js +146 -0
- package/.agents/scripts/lib/orchestration/epic-runner/phases/snapshot.js +110 -0
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/composition.js +392 -0
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/signals.js +217 -0
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/transport.js +235 -0
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter.js +69 -0
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/_bullet-format.js +32 -0
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/crap-drift.js +291 -0
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/maintainability-drift.js +175 -0
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/stalled-worktree.js +37 -0
- package/.agents/scripts/lib/orchestration/epic-runner/story-launcher.js +127 -0
- package/.agents/scripts/lib/orchestration/epic-runner/story-run-progress-writer.js +400 -0
- package/.agents/scripts/lib/orchestration/epic-runner/sub-agent-return.js +285 -0
- package/.agents/scripts/lib/orchestration/epic-runner/wave-scheduler.js +66 -0
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-apply.js +797 -0
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-diff.js +619 -0
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-discriminator.js +335 -0
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-format.js +230 -0
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-ops.js +363 -0
- package/.agents/scripts/lib/orchestration/error-journal.js +139 -0
- package/.agents/scripts/lib/orchestration/file-assumption-enum.js +31 -0
- package/.agents/scripts/lib/orchestration/file-assumptions.js +506 -0
- package/.agents/scripts/lib/orchestration/finalize/close-planning-tickets.js +116 -0
- package/.agents/scripts/lib/orchestration/finalize/open-or-locate-pr.js +241 -0
- package/.agents/scripts/lib/orchestration/finalize/post-handoff-comment.js +489 -0
- package/.agents/scripts/lib/orchestration/finalize/sanitize-skip-ci.js +88 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-reap.js +219 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches.js +309 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/cli.js +99 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/fast-forward.js +123 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/filters.js +57 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes-ff.js +114 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes.js +426 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/parse-args.js +84 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/phase-drivers.js +365 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/prompts.js +72 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/prune.js +69 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/render.js +214 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/stashes.js +137 -0
- package/.agents/scripts/lib/orchestration/label-transitions.js +43 -0
- package/.agents/scripts/lib/orchestration/lifecycle/bus.js +309 -0
- package/.agents/scripts/lib/orchestration/lifecycle/emit-story-dispatch-end.js +147 -0
- package/.agents/scripts/lib/orchestration/lifecycle/emit-story-heartbeat.js +155 -0
- package/.agents/scripts/lib/orchestration/lifecycle/ledger-writer.js +226 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/README.md +69 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/acceptance-reconciler.js +378 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-armer.js +248 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-predicate.js +527 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/branch-cleaner.js +259 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/checkpoint-pointer-writer.js +278 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/cleaner.js +355 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/finalizer.js +647 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/index.js +331 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/intervention-recorder.js +140 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/merge-watcher.js +421 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/notify-dispatcher.js +168 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/watcher.js +668 -0
- package/.agents/scripts/lib/orchestration/lifecycle/trace-logger.js +322 -0
- package/.agents/scripts/lib/orchestration/lint-baseline-service.js +114 -0
- package/.agents/scripts/lib/orchestration/manifest-builder.js +216 -0
- package/.agents/scripts/lib/orchestration/model-attribution.js +390 -0
- package/.agents/scripts/lib/orchestration/parked-follow-ons.js +147 -0
- package/.agents/scripts/lib/orchestration/phase-runner.js +87 -0
- package/.agents/scripts/lib/orchestration/plan-review-routing.js +63 -0
- package/.agents/scripts/lib/orchestration/plan-runner/plan-router.js +86 -0
- package/.agents/scripts/lib/orchestration/plan-runner/worktree-sweep.js +212 -0
- package/.agents/scripts/lib/orchestration/planning-context-budget.js +213 -0
- package/.agents/scripts/lib/orchestration/planning-risk.js +155 -0
- package/.agents/scripts/lib/orchestration/planning-state-manager.js +318 -0
- package/.agents/scripts/lib/orchestration/post-merge/phases/branch-cleanup.js +56 -0
- package/.agents/scripts/lib/orchestration/post-merge/phases/dashboard-refresh.js +33 -0
- package/.agents/scripts/lib/orchestration/post-merge/phases/notification.js +78 -0
- package/.agents/scripts/lib/orchestration/post-merge/phases/temp-cleanup.js +68 -0
- package/.agents/scripts/lib/orchestration/post-merge/phases/ticket-closure.js +118 -0
- package/.agents/scripts/lib/orchestration/post-merge/phases/worktree-reap.js +396 -0
- package/.agents/scripts/lib/orchestration/post-merge-pipeline.js +205 -0
- package/.agents/scripts/lib/orchestration/pr-base-guard.js +47 -0
- package/.agents/scripts/lib/orchestration/preflight-cache.js +164 -0
- package/.agents/scripts/lib/orchestration/reassert-status-column.js +202 -0
- package/.agents/scripts/lib/orchestration/reconciler.js +137 -0
- package/.agents/scripts/lib/orchestration/recurring-failure-detector.js +152 -0
- package/.agents/scripts/lib/orchestration/recut.js +56 -0
- package/.agents/scripts/lib/orchestration/resolves-token.js +127 -0
- package/.agents/scripts/lib/orchestration/retro/phases/checks.js +94 -0
- package/.agents/scripts/lib/orchestration/retro/phases/compose-body.js +448 -0
- package/.agents/scripts/lib/orchestration/retro/phases/gather-signals.js +335 -0
- package/.agents/scripts/lib/orchestration/retro/phases/post-and-mirror.js +133 -0
- package/.agents/scripts/lib/orchestration/retro-heuristics.js +57 -0
- package/.agents/scripts/lib/orchestration/retro-perf-heuristics.js +275 -0
- package/.agents/scripts/lib/orchestration/retro-proposals.js +395 -0
- package/.agents/scripts/lib/orchestration/retro-runner.js +171 -0
- package/.agents/scripts/lib/orchestration/review-depth.js +93 -0
- package/.agents/scripts/lib/orchestration/review-providers/codex.js +363 -0
- package/.agents/scripts/lib/orchestration/review-providers/findings-renderer.js +205 -0
- package/.agents/scripts/lib/orchestration/review-providers/native.js +805 -0
- package/.agents/scripts/lib/orchestration/review-providers/review-depth.js +73 -0
- package/.agents/scripts/lib/orchestration/review-providers/review-provider-factory.js +396 -0
- package/.agents/scripts/lib/orchestration/review-providers/security-review.js +373 -0
- package/.agents/scripts/lib/orchestration/review-providers/types.js +89 -0
- package/.agents/scripts/lib/orchestration/review-providers/ultrareview.js +107 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/auto-merge.js +159 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/base-sync.js +194 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +81 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/code-review.js +190 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +70 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/pull-request.js +106 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/push.js +42 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/worktree-reap.js +73 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/wrong-tree-guard.js +225 -0
- package/.agents/scripts/lib/orchestration/single-story-close/runner.js +315 -0
- package/.agents/scripts/lib/orchestration/single-story-lease-guard.js +149 -0
- package/.agents/scripts/lib/orchestration/skill-capsule-loader.js +110 -0
- package/.agents/scripts/lib/orchestration/spec-freshness.js +320 -0
- package/.agents/scripts/lib/orchestration/spec-renderer.js +456 -0
- package/.agents/scripts/lib/orchestration/spec-section-validator.js +80 -0
- package/.agents/scripts/lib/orchestration/story-close/auto-refresh-runner.js +797 -0
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/gate-failure.js +163 -0
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/pre-merge-attribution.js +152 -0
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/refresh-commit.js +387 -0
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/regression-projection.js +266 -0
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/scope-discovery.js +48 -0
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution-wiring.js +67 -0
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution.js +161 -0
- package/.agents/scripts/lib/orchestration/story-close/baseline-friction-body.js +117 -0
- package/.agents/scripts/lib/orchestration/story-close/cd-out-guard.js +86 -0
- package/.agents/scripts/lib/orchestration/story-close/cleanup-reconciler.js +147 -0
- package/.agents/scripts/lib/orchestration/story-close/close-inputs.js +142 -0
- package/.agents/scripts/lib/orchestration/story-close/comment-bodies.js +62 -0
- package/.agents/scripts/lib/orchestration/story-close/format-autofix-scoped.js +221 -0
- package/.agents/scripts/lib/orchestration/story-close/format-autofix-shared.js +123 -0
- package/.agents/scripts/lib/orchestration/story-close/format-autofix.js +216 -0
- package/.agents/scripts/lib/orchestration/story-close/merge-runner.js +636 -0
- package/.agents/scripts/lib/orchestration/story-close/merge-subject.js +198 -0
- package/.agents/scripts/lib/orchestration/story-close/phases/branch-restore.js +105 -0
- package/.agents/scripts/lib/orchestration/story-close/phases/close.js +222 -0
- package/.agents/scripts/lib/orchestration/story-close/phases/code-review.js +220 -0
- package/.agents/scripts/lib/orchestration/story-close/phases/gates.js +291 -0
- package/.agents/scripts/lib/orchestration/story-close/phases/locked-pipeline.js +234 -0
- package/.agents/scripts/lib/orchestration/story-close/phases/preflight.js +110 -0
- package/.agents/scripts/lib/orchestration/story-close/phases/refresh.js +86 -0
- package/.agents/scripts/lib/orchestration/story-close/phases/timeout-blocked-emitter.js +112 -0
- package/.agents/scripts/lib/orchestration/story-close/phases/timeout-blocked.js +157 -0
- package/.agents/scripts/lib/orchestration/story-close/post-merge-close.js +434 -0
- package/.agents/scripts/lib/orchestration/story-close/pre-merge-validation.js +290 -0
- package/.agents/scripts/lib/orchestration/story-close-recovery.js +643 -0
- package/.agents/scripts/lib/orchestration/structured-comment-parser.js +67 -0
- package/.agents/scripts/lib/orchestration/task-body-validator.js +391 -0
- package/.agents/scripts/lib/orchestration/ticket-lease.js +358 -0
- package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +783 -0
- package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +367 -0
- package/.agents/scripts/lib/orchestration/ticket-validator.js +691 -0
- package/.agents/scripts/lib/orchestration/ticketing/bulk.js +723 -0
- package/.agents/scripts/lib/orchestration/ticketing/reads.js +474 -0
- package/.agents/scripts/lib/orchestration/ticketing/state.js +559 -0
- package/.agents/scripts/lib/orchestration/ticketing.js +55 -0
- package/.agents/scripts/lib/orchestration/wave-marker.js +28 -0
- package/.agents/scripts/lib/orchestration/wave-record-io.js +277 -0
- package/.agents/scripts/lib/orchestration/wave-record-notifications.js +189 -0
- package/.agents/scripts/lib/orchestration/wave-record-projection.js +423 -0
- package/.agents/scripts/lib/path-security.js +25 -0
- package/.agents/scripts/lib/plan-phase-cleanup.js +125 -0
- package/.agents/scripts/lib/preflight-runner.js +196 -0
- package/.agents/scripts/lib/presentation/dispatch-manifest-render.js +95 -0
- package/.agents/scripts/lib/presentation/manifest-builder.js +245 -0
- package/.agents/scripts/lib/presentation/manifest-formatter.js +243 -0
- package/.agents/scripts/lib/presentation/manifest-helpers.js +213 -0
- package/.agents/scripts/lib/presentation/manifest-persistence.js +262 -0
- package/.agents/scripts/lib/presentation/manifest-procedures.js +55 -0
- package/.agents/scripts/lib/presentation/manifest-render-waves.js +252 -0
- package/.agents/scripts/lib/presentation/manifest-renderer.js +188 -0
- package/.agents/scripts/lib/presentation/manifest-story-views.js +119 -0
- package/.agents/scripts/lib/provider-factory.js +80 -0
- package/.agents/scripts/lib/push-epic-retry.js +209 -0
- package/.agents/scripts/lib/qa/console-allowlist.js +151 -0
- package/.agents/scripts/lib/qa/coverage-report.js +181 -0
- package/.agents/scripts/lib/qa/coverage-verdict.js +296 -0
- package/.agents/scripts/lib/qa/propose-missing-test.js +95 -0
- package/.agents/scripts/lib/qa/qa-context-hydrator.js +296 -0
- package/.agents/scripts/lib/qa/qa-session.js +197 -0
- package/.agents/scripts/lib/qa/redact-evidence.js +245 -0
- package/.agents/scripts/lib/qa/resolve-qa-contract.js +190 -0
- package/.agents/scripts/lib/qa/resolve-selection.js +373 -0
- package/.agents/scripts/lib/runtime-deps/ensure-installed.js +100 -0
- package/.agents/scripts/lib/runtime-deps/manifest.js +96 -0
- package/.agents/scripts/lib/runtime-deps/preflight.js +78 -0
- package/.agents/scripts/lib/runtime-deps/scan-imports.js +202 -0
- package/.agents/scripts/lib/signals/detectors/common.js +36 -0
- package/.agents/scripts/lib/signals/detectors/hotspot.js +298 -0
- package/.agents/scripts/lib/signals/detectors/index.js +14 -0
- package/.agents/scripts/lib/signals/detectors/retry.js +289 -0
- package/.agents/scripts/lib/signals/detectors/rework.js +204 -0
- package/.agents/scripts/lib/signals/index.js +39 -0
- package/.agents/scripts/lib/signals/read.js +268 -0
- package/.agents/scripts/lib/signals/schema.js +225 -0
- package/.agents/scripts/lib/signals/span-tree.js +290 -0
- package/.agents/scripts/lib/signals/write.js +19 -0
- package/.agents/scripts/lib/single-story/confirm-merge.js +201 -0
- package/.agents/scripts/lib/single-story/story-merged-notify.js +126 -0
- package/.agents/scripts/lib/single-story-sweep/protection.js +274 -0
- package/.agents/scripts/lib/single-story-sweep/sweep-lock.js +169 -0
- package/.agents/scripts/lib/single-story-sweep.js +329 -0
- package/.agents/scripts/lib/skills/parse-skill.js +202 -0
- package/.agents/scripts/lib/skills/walk-skill-files.js +56 -0
- package/.agents/scripts/lib/spec/index.js +36 -0
- package/.agents/scripts/lib/spec/loader.js +425 -0
- package/.agents/scripts/lib/spec/state.js +217 -0
- package/.agents/scripts/lib/story-body/story-body.js +743 -0
- package/.agents/scripts/lib/story-init/blocker-validator.js +68 -0
- package/.agents/scripts/lib/story-init/branch-initializer.js +422 -0
- package/.agents/scripts/lib/story-init/context-resolver.js +92 -0
- package/.agents/scripts/lib/story-init/donor-precheck.js +207 -0
- package/.agents/scripts/lib/story-init/hierarchy-tracer.js +36 -0
- package/.agents/scripts/lib/story-init/state-transitioner.js +80 -0
- package/.agents/scripts/lib/story-init/task-graph-builder.js +114 -0
- package/.agents/scripts/lib/story-init/transition-summary.js +34 -0
- package/.agents/scripts/lib/story-lifecycle.js +186 -0
- package/.agents/scripts/lib/story-plan.js +246 -0
- package/.agents/scripts/lib/task-utils.js +26 -0
- package/.agents/scripts/lib/templates/decomposer-prompts.js +168 -0
- package/.agents/scripts/lib/test-env.js +30 -0
- package/.agents/scripts/lib/test-isolate/env-snapshot-loader.js +52 -0
- package/.agents/scripts/lib/test-isolate/list-files.js +90 -0
- package/.agents/scripts/lib/test-isolate/parse-tap.js +75 -0
- package/.agents/scripts/lib/test-isolate/runner.js +483 -0
- package/.agents/scripts/lib/test-profile/parse-tap.js +136 -0
- package/.agents/scripts/lib/test-profile/render-report.js +45 -0
- package/.agents/scripts/lib/test-reserved-epic-temp-ids.js +35 -0
- package/.agents/scripts/lib/test-tiers.js +94 -0
- package/.agents/scripts/lib/util/concurrent-map.js +59 -0
- package/.agents/scripts/lib/util/phase-timer-state.js +72 -0
- package/.agents/scripts/lib/util/phase-timer.js +163 -0
- package/.agents/scripts/lib/util/poll-loop.js +86 -0
- package/.agents/scripts/lib/util/with-timeout.js +32 -0
- package/.agents/scripts/lib/validation-evidence.js +323 -0
- package/.agents/scripts/lib/wave-runner/tick.js +665 -0
- package/.agents/scripts/lib/wave-runner/wave-checkpoint.js +91 -0
- package/.agents/scripts/lib/wave-runner/wave-runner-error.js +19 -0
- package/.agents/scripts/lib/workers/crap-worker.js +197 -0
- package/.agents/scripts/lib/workers/maintainability-report-worker.js +137 -0
- package/.agents/scripts/lib/workers/maintainability-worker.js +79 -0
- package/.agents/scripts/lib/workspace-provisioner.js +189 -0
- package/.agents/scripts/lib/worktree/bootstrapper.js +48 -0
- package/.agents/scripts/lib/worktree/inspector.js +140 -0
- package/.agents/scripts/lib/worktree/lifecycle/creation.js +118 -0
- package/.agents/scripts/lib/worktree/lifecycle/drift-detection.js +62 -0
- package/.agents/scripts/lib/worktree/lifecycle/force-drain.js +276 -0
- package/.agents/scripts/lib/worktree/lifecycle/gc.js +49 -0
- package/.agents/scripts/lib/worktree/lifecycle/merge-reachability.js +178 -0
- package/.agents/scripts/lib/worktree/lifecycle/pending-cleanup.js +264 -0
- package/.agents/scripts/lib/worktree/lifecycle/precheck.js +100 -0
- package/.agents/scripts/lib/worktree/lifecycle/reap.js +588 -0
- package/.agents/scripts/lib/worktree/lifecycle/registry-sync.js +124 -0
- package/.agents/scripts/lib/worktree/lifecycle/shared.js +26 -0
- package/.agents/scripts/lib/worktree/lifecycle-manager.js +40 -0
- package/.agents/scripts/lib/worktree/node-modules-strategy.js +349 -0
- package/.agents/scripts/lib/worktree-manager.js +243 -0
- package/.agents/scripts/lifecycle-diff.js +206 -0
- package/.agents/scripts/lifecycle-emit-story-dispatch.js +194 -0
- package/.agents/scripts/lifecycle-emit.js +479 -0
- package/.agents/scripts/lint-baseline.js +507 -0
- package/.agents/scripts/lint-label-vocabulary.js +237 -0
- package/.agents/scripts/loc-delta.js +205 -0
- package/.agents/scripts/notify.js +307 -0
- package/.agents/scripts/package.json +3 -0
- package/.agents/scripts/post-structured-comment.js +127 -0
- package/.agents/scripts/pr-watch-with-update.js +152 -0
- package/.agents/scripts/providers/github/auth.js +65 -0
- package/.agents/scripts/providers/github/board-add.js +63 -0
- package/.agents/scripts/providers/github/branch-protection.js +186 -0
- package/.agents/scripts/providers/github/cache.js +72 -0
- package/.agents/scripts/providers/github/comments.js +131 -0
- package/.agents/scripts/providers/github/compose.js +111 -0
- package/.agents/scripts/providers/github/errors.js +242 -0
- package/.agents/scripts/providers/github/issues.js +242 -0
- package/.agents/scripts/providers/github/labels.js +179 -0
- package/.agents/scripts/providers/github/mappers.js +126 -0
- package/.agents/scripts/providers/github/merge-methods.js +82 -0
- package/.agents/scripts/providers/github/project-board.js +47 -0
- package/.agents/scripts/providers/github/projects-v2-graphql.js +472 -0
- package/.agents/scripts/providers/github/prs.js +103 -0
- package/.agents/scripts/providers/github/request-helpers.js +110 -0
- package/.agents/scripts/providers/github/sub-issues.js +369 -0
- package/.agents/scripts/providers/github/tickets.js +381 -0
- package/.agents/scripts/providers/github/transient-retry.js +62 -0
- package/.agents/scripts/providers/github.js +157 -0
- package/.agents/scripts/quality-preview.js +327 -0
- package/.agents/scripts/quality-watch.js +223 -0
- package/.agents/scripts/render-manifest.js +143 -0
- package/.agents/scripts/resync-status-column.js +176 -0
- package/.agents/scripts/retro-run.js +167 -0
- package/.agents/scripts/run-audit-suite.js +97 -0
- package/.agents/scripts/run-coverage.js +103 -0
- package/.agents/scripts/run-lint.js +94 -0
- package/.agents/scripts/run-test-profile.js +126 -0
- package/.agents/scripts/run-tests.js +185 -0
- package/.agents/scripts/run-verify.js +56 -0
- package/.agents/scripts/select-audits.js +155 -0
- package/.agents/scripts/signals-view.js +294 -0
- package/.agents/scripts/single-story-close.js +83 -0
- package/.agents/scripts/single-story-confirm-merge.js +183 -0
- package/.agents/scripts/single-story-init.js +692 -0
- package/.agents/scripts/stories-wave-tick.js +415 -0
- package/.agents/scripts/story-close.js +246 -0
- package/.agents/scripts/story-deliver-prepare.js +267 -0
- package/.agents/scripts/story-init.js +516 -0
- package/.agents/scripts/story-phase.js +327 -0
- package/.agents/scripts/story-plan.js +284 -0
- package/.agents/scripts/sync-agentrc.js +71 -0
- package/.agents/scripts/sync-branch-from-base.js +138 -0
- package/.agents/scripts/sync-claude-commands.js +151 -0
- package/.agents/scripts/test-isolate.js +222 -0
- package/.agents/scripts/test-wrapper.js +108 -0
- package/.agents/scripts/update-coverage-baseline.js +129 -0
- package/.agents/scripts/update-crap-baseline.js +177 -0
- package/.agents/scripts/update-duplication-baseline.js +134 -0
- package/.agents/scripts/update-maintainability-baseline.js +183 -0
- package/.agents/scripts/update-mutation-baseline.js +189 -0
- package/.agents/scripts/update-ticket-state.js +107 -0
- package/.agents/scripts/validate-docs-freshness.js +259 -0
- package/.agents/scripts/validate-skills.js +278 -0
- package/.agents/scripts/wave-tick.js +335 -0
- package/.agents/skills/core/analyze-execution/SKILL.md +98 -0
- package/.agents/skills/core/api-and-interface-design/SKILL.md +327 -0
- package/.agents/skills/core/baseline-refresh/SKILL.md +181 -0
- package/.agents/skills/core/browser-testing-with-devtools/SKILL.md +352 -0
- package/.agents/skills/core/ci-cd-and-automation/SKILL.md +274 -0
- package/.agents/skills/core/ci-cd-and-automation/examples.md +211 -0
- package/.agents/skills/core/code-review-and-quality/SKILL.md +421 -0
- package/.agents/skills/core/code-simplification/SKILL.md +389 -0
- package/.agents/skills/core/context-engineering/SKILL.md +309 -0
- package/.agents/skills/core/context-engineering/examples.md +58 -0
- package/.agents/skills/core/debugging-and-error-recovery/SKILL.md +338 -0
- package/.agents/skills/core/deprecation-and-migration/SKILL.md +250 -0
- package/.agents/skills/core/diagnose-friction/SKILL.md +79 -0
- package/.agents/skills/core/documentation-and-adrs/SKILL.md +323 -0
- package/.agents/skills/core/epic-plan-consolidate/SKILL.md +145 -0
- package/.agents/skills/core/epic-plan-decompose-author/SKILL.md +425 -0
- package/.agents/skills/core/epic-plan-spec-author/SKILL.md +393 -0
- package/.agents/skills/core/frontend-ui-engineering/SKILL.md +357 -0
- package/.agents/skills/core/git-workflow-and-versioning/SKILL.md +352 -0
- package/.agents/skills/core/hydrate-context/SKILL.md +118 -0
- package/.agents/skills/core/idea-refinement/SKILL.md +317 -0
- package/.agents/skills/core/idea-refinement/examples.md +437 -0
- package/.agents/skills/core/idea-refinement/frameworks.md +135 -0
- package/.agents/skills/core/idea-refinement/refinement-criteria.md +155 -0
- package/.agents/skills/core/idea-refinement/scripts/idea-refine.sh +15 -0
- package/.agents/skills/core/incremental-implementation/SKILL.md +271 -0
- package/.agents/skills/core/introducing-a-baseline-gate/SKILL.md +213 -0
- package/.agents/skills/core/knowledge-transfer/SKILL.md +175 -0
- package/.agents/skills/core/mutation-survivor-remediation/SKILL.md +117 -0
- package/.agents/skills/core/performance-optimization/SKILL.md +314 -0
- package/.agents/skills/core/planning-and-task-breakdown/SKILL.md +277 -0
- package/.agents/skills/core/property-based-testing/SKILL.md +148 -0
- package/.agents/skills/core/qa-coverage-mapping/SKILL.md +105 -0
- package/.agents/skills/core/refactoring-discipline/SKILL.md +111 -0
- package/.agents/skills/core/scope-triage/SKILL.md +127 -0
- package/.agents/skills/core/security-and-hardening/SKILL.md +400 -0
- package/.agents/skills/core/shipping-and-launch/SKILL.md +328 -0
- package/.agents/skills/core/spec-driven-development/SKILL.md +252 -0
- package/.agents/skills/core/test-driven-development/SKILL.md +475 -0
- package/.agents/skills/core/using-agent-skills/SKILL.md +232 -0
- package/.agents/skills/skills.index.json +596 -0
- package/.agents/skills/stack/architecture/monorepo-path-strategist/SKILL.md +31 -0
- package/.agents/skills/stack/architecture/structured-output-zod/SKILL.md +51 -0
- package/.agents/skills/stack/architecture/subagent-orchestration/SKILL.md +48 -0
- package/.agents/skills/stack/backend/cloudflare-hono-architect/SKILL.md +31 -0
- package/.agents/skills/stack/backend/cloudflare-hono-architect/examples/route-template.ts +33 -0
- package/.agents/skills/stack/backend/cloudflare-queue-manager/SKILL.md +31 -0
- package/.agents/skills/stack/backend/cloudflare-workers/SKILL.md +51 -0
- package/.agents/skills/stack/backend/highlevel-crm/SKILL.md +54 -0
- package/.agents/skills/stack/backend/sqlite-drizzle-expert/SKILL.md +29 -0
- package/.agents/skills/stack/backend/sqlite-drizzle-expert/examples/schema-template.ts +30 -0
- package/.agents/skills/stack/backend/stripe-integration/SKILL.md +57 -0
- package/.agents/skills/stack/backend/stripe-integration/scripts/listen-stripe.sh +9 -0
- package/.agents/skills/stack/backend/turso-sqlite/SKILL.md +48 -0
- package/.agents/skills/stack/frontend/astro/SKILL.md +62 -0
- package/.agents/skills/stack/frontend/astro-react-island-strategist/SKILL.md +30 -0
- package/.agents/skills/stack/frontend/expo-react-native-developer/SKILL.md +29 -0
- package/.agents/skills/stack/frontend/google-analytics-v4/SKILL.md +50 -0
- package/.agents/skills/stack/frontend/tailwind-v4/SKILL.md +58 -0
- package/.agents/skills/stack/frontend/ui-accessibility-engineer/SKILL.md +34 -0
- package/.agents/skills/stack/qa/audit-accessibility/SKILL.md +51 -0
- package/.agents/skills/stack/qa/gherkin-authoring/SKILL.md +257 -0
- package/.agents/skills/stack/qa/gherkin-authoring/examples/invoice-issue.feature +41 -0
- package/.agents/skills/stack/qa/lighthouse-baseline/SKILL.md +199 -0
- package/.agents/skills/stack/qa/playwright/SKILL.md +50 -0
- package/.agents/skills/stack/qa/playwright-bdd/SKILL.md +188 -0
- package/.agents/skills/stack/qa/qa-explore-driving/SKILL.md +142 -0
- package/.agents/skills/stack/qa/qa-harness/SKILL.md +220 -0
- package/.agents/skills/stack/qa/vitest/SKILL.md +51 -0
- package/.agents/skills/stack/security/backend-security-patterns/SKILL.md +68 -0
- package/.agents/starter-agentrc.json +22 -0
- package/.agents/templates/agent-protocol.md +72 -0
- package/.agents/templates/docs/architecture.md +30 -0
- package/.agents/templates/docs/decisions.md +24 -0
- package/.agents/templates/epic-from-idea.md +21 -0
- package/.agents/templates/single-story-body.md +17 -0
- package/.agents/workflows/agents-update.md +415 -0
- package/.agents/workflows/audit-architecture.md +312 -0
- package/.agents/workflows/audit-clean-code.md +179 -0
- package/.agents/workflows/audit-dependencies.md +91 -0
- package/.agents/workflows/audit-devops.md +110 -0
- package/.agents/workflows/audit-lighthouse.md +260 -0
- package/.agents/workflows/audit-performance.md +161 -0
- package/.agents/workflows/audit-privacy.md +104 -0
- package/.agents/workflows/audit-quality.md +191 -0
- package/.agents/workflows/audit-security.md +156 -0
- package/.agents/workflows/audit-seo.md +118 -0
- package/.agents/workflows/audit-sre.md +139 -0
- package/.agents/workflows/audit-to-stories.md +257 -0
- package/.agents/workflows/audit-ux-ui.md +102 -0
- package/.agents/workflows/epic-deliver.md +864 -0
- package/.agents/workflows/epic-plan.md +998 -0
- package/.agents/workflows/explain.md +118 -0
- package/.agents/workflows/git-cleanup.md +250 -0
- package/.agents/workflows/git-commit-all.md +15 -0
- package/.agents/workflows/git-merge-pr.md +377 -0
- package/.agents/workflows/git-pr-all.md +278 -0
- package/.agents/workflows/git-push.md +60 -0
- package/.agents/workflows/helpers/_merge-conflict-template.md +54 -0
- package/.agents/workflows/helpers/acceptance-self-eval.md +74 -0
- package/.agents/workflows/helpers/agents-sync-config.md +129 -0
- package/.agents/workflows/helpers/code-quality-guardrails.md +101 -0
- package/.agents/workflows/helpers/code-review.md +370 -0
- package/.agents/workflows/helpers/diagnose.md +117 -0
- package/.agents/workflows/helpers/epic-audit.md +295 -0
- package/.agents/workflows/helpers/epic-deliver-story.md +370 -0
- package/.agents/workflows/helpers/epic-plan-decompose.md +199 -0
- package/.agents/workflows/helpers/epic-plan-spec.md +184 -0
- package/.agents/workflows/helpers/epic-testing.md +125 -0
- package/.agents/workflows/helpers/parallel-tooling.md +88 -0
- package/.agents/workflows/helpers/signals.md +112 -0
- package/.agents/workflows/helpers/single-story-deliver.md +636 -0
- package/.agents/workflows/helpers/worktree-lifecycle.md +317 -0
- package/.agents/workflows/onboard.md +207 -0
- package/.agents/workflows/qa-assist.md +293 -0
- package/.agents/workflows/qa-explore.md +350 -0
- package/.agents/workflows/qa-run-harness.md +288 -0
- package/.agents/workflows/story-deliver.md +327 -0
- package/.agents/workflows/story-plan.md +233 -0
- package/LICENSE +21 -0
- package/README.md +193 -0
- package/bin/mandrel.js +56 -0
- package/bin/postinstall.js +195 -0
- package/lib/cli/__tests__/migrate.test.js +268 -0
- package/lib/cli/__tests__/sync-local-zone.test.js +247 -0
- package/lib/cli/__tests__/sync.test.js +372 -0
- package/lib/cli/__tests__/update-major.test.js +217 -0
- package/lib/cli/__tests__/update.test.js +696 -0
- package/lib/cli/__tests__/version-check.test.js +398 -0
- package/lib/cli/doctor.js +124 -0
- package/lib/cli/explain.js +107 -0
- package/lib/cli/migrate.js +260 -0
- package/lib/cli/registry.js +830 -0
- package/lib/cli/sync-commands.js +50 -0
- package/lib/cli/sync.js +200 -0
- package/lib/cli/uninstall.js +795 -0
- package/lib/cli/update.js +854 -0
- package/lib/cli/version-check.js +206 -0
- package/lib/migrations/README.md +69 -0
- package/lib/migrations/__tests__/index.test.js +216 -0
- package/lib/migrations/index.js +164 -0
- package/package.json +105 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: structured-output-zod
|
|
3
|
+
description:
|
|
4
|
+
Validates external and structured data with Zod schemas. Use when accepting
|
|
5
|
+
untrusted input at API boundaries, validating environment variables on
|
|
6
|
+
startup, parsing third-party responses, or generating typed shapes via
|
|
7
|
+
`z.infer`. Parse, don't validate.
|
|
8
|
+
vendor: zod
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Skill: Structured Output (Zod)
|
|
12
|
+
|
|
13
|
+
## Policy Capsule
|
|
14
|
+
|
|
15
|
+
- Define every external or structured data shape as a Zod schema before it is processed or stored.
|
|
16
|
+
- Derive TypeScript types from schemas via `z.infer`; never hand-author a parallel `type` for the same shape.
|
|
17
|
+
- Parse untrusted input with `z.parse()` or `z.safeParse()` — do not pass raw values past the boundary.
|
|
18
|
+
- Validate every incoming request body and query parameter at the application boundary.
|
|
19
|
+
- Validate `process.env` at startup with a Zod schema so missing or malformed config fails fast.
|
|
20
|
+
- Compose complex schemas with `.extend()`, `.merge()`, and `.pick()` to keep shapes DRY.
|
|
21
|
+
- Use `z.coerce.*` deliberately for form and query inputs; do not coerce in trusted server-to-server paths.
|
|
22
|
+
|
|
23
|
+
Guidelines for ensuring system reliability through schema validation and typed
|
|
24
|
+
safety.
|
|
25
|
+
|
|
26
|
+
## 1. Core Principles
|
|
27
|
+
|
|
28
|
+
- **Schema First:** Always define data shapes with Zod before processing or
|
|
29
|
+
storing external data.
|
|
30
|
+
- **Type Safety:** Leverage Zod's `z.infer` to automatically generate TypeScript
|
|
31
|
+
types from your schemas.
|
|
32
|
+
- **Parse, Don't Validate:** Use `z.parse()` or `z.safeParse()` to transform
|
|
33
|
+
untrusted input into trusted, typed objects.
|
|
34
|
+
|
|
35
|
+
## 2. Technical Standards
|
|
36
|
+
|
|
37
|
+
- **API Validation:** Validate every incoming request body and query parameter
|
|
38
|
+
at the application boundary.
|
|
39
|
+
- **Environment Variables:** Use Zod to validate `process.env` on startup to
|
|
40
|
+
fail fast if critical config is missing.
|
|
41
|
+
- **Database Schemas:** In systems like Drizzle or Turso collections, use Zod
|
|
42
|
+
schemas to ensure data integrity during writes.
|
|
43
|
+
|
|
44
|
+
## 3. Best Practices
|
|
45
|
+
|
|
46
|
+
- **Error Messages:** Provide user-friendly, specific error messages via Zod's
|
|
47
|
+
custom error formatting.
|
|
48
|
+
- **Composition:** Build complex schemas using `.extend()`, `.merge()`, and
|
|
49
|
+
`.pick()` to maintain DRY principles in your types.
|
|
50
|
+
- **Coercion:** Use Zod coercion (`z.coerce.number()`) carefully to handle
|
|
51
|
+
string inputs from forms or query parameters.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: subagent-orchestration
|
|
3
|
+
description:
|
|
4
|
+
Coordinates complex tasks via task-isolated subagents. Use when one objective
|
|
5
|
+
is too large for a single agent or when independent work streams should run
|
|
6
|
+
concurrently with minimal context bleed. One objective per subagent;
|
|
7
|
+
summarize before returning to keep the main context window clean.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Skill: Subagent Orchestration
|
|
11
|
+
|
|
12
|
+
## Policy Capsule
|
|
13
|
+
|
|
14
|
+
- Dispatch one objective per subagent; never bundle unrelated goals into a single delegation.
|
|
15
|
+
- Hand each subagent only the minimum context (files, docs, goal) required — no broad context dumps.
|
|
16
|
+
- Specify the expected return format explicitly (JSON summary, diff, bullet list) in every handoff.
|
|
17
|
+
- Verify the subagent's output before incorporating it; treat returned artifacts as untrusted until checked.
|
|
18
|
+
- Run non-dependent subagents in parallel; serialize only when one subagent's output is required input for another.
|
|
19
|
+
- Require a concise summary back from each subagent to keep the main context window clean.
|
|
20
|
+
- Investigate subagent failures rather than retrying blindly with the same prompt.
|
|
21
|
+
|
|
22
|
+
Internal protocol for managing complex tasks through the creation and
|
|
23
|
+
coordination of subagents.
|
|
24
|
+
|
|
25
|
+
## 1. Core Principles
|
|
26
|
+
|
|
27
|
+
- **Task Isolation:** One objective per subagent. Do not overload a subagent
|
|
28
|
+
with multiple unrelated tasks.
|
|
29
|
+
- **Minimal Context:** Provide only the necessary context (files, docs, specific
|
|
30
|
+
goal) to keep the subagent focused and token-efficient.
|
|
31
|
+
- **Verification:** The main agent must always verify the subagent's output
|
|
32
|
+
before incorporating it into the final solution.
|
|
33
|
+
|
|
34
|
+
## 2. Operation Standards
|
|
35
|
+
|
|
36
|
+
- **Handoffs:** When delegating, clearly state the expected return format (e.g.,
|
|
37
|
+
"Return a JSON summary", "Provide a diff for file X").
|
|
38
|
+
- **Error Handling:** If a subagent fails or returns an ambiguous result,
|
|
39
|
+
investigate the failure rather than retrying blindly.
|
|
40
|
+
- **Parallelism:** Use subagents to perform non-dependent tasks concurrently
|
|
41
|
+
(e.g., auditing three different modules simultaneously).
|
|
42
|
+
|
|
43
|
+
## 3. Best Practices
|
|
44
|
+
|
|
45
|
+
- **State Sync:** Ensure the main agent's mental model remains the source of
|
|
46
|
+
truth if multiple subagents modify the codebase.
|
|
47
|
+
- **Summarization:** Require subagents to provide a concise summary of their
|
|
48
|
+
findings to prevent the main context window from being flooded.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cloudflare-hono-architect
|
|
3
|
+
description:
|
|
4
|
+
Prevents Node.js module hallucinations in Cloudflare Worker (V8 isolate)
|
|
5
|
+
edge environments. Use when writing Hono routes deployed to Workers — prefer
|
|
6
|
+
Web APIs (Fetch, Web Crypto) over Node built-ins (`fs`, `path`,
|
|
7
|
+
`child_process`, `crypto`), and access bindings via Hono's `c.env`.
|
|
8
|
+
vendor: cloudflare
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Cloudflare Worker & Hono Architect
|
|
12
|
+
|
|
13
|
+
## Policy Capsule
|
|
14
|
+
|
|
15
|
+
- Never import Node.js built-ins (`fs`, `path`, `child_process`, Node's `crypto`) in Worker code — they do not exist in the V8 isolate runtime.
|
|
16
|
+
- Use the Web Crypto API for hashing, signing, and random bytes; do not reach for `node:crypto`.
|
|
17
|
+
- Access bindings (env vars, R2 buckets, KV, Queues, D1) only through Hono's context (`c.env`), never through `process.env`.
|
|
18
|
+
- Prefer Web platform APIs (`fetch`, `Request`, `Response`, `URLPattern`) over Node-flavored equivalents.
|
|
19
|
+
- Treat any import that resolves to a Node-only polyfill as a hallucination — surface and remove it.
|
|
20
|
+
|
|
21
|
+
**Description:** Prevents Node.js module hallucinations in edge environments.
|
|
22
|
+
|
|
23
|
+
**Instruction:** The API is built with Hono and deployed to Cloudflare Workers
|
|
24
|
+
(V8 Isolates).
|
|
25
|
+
|
|
26
|
+
- YOU MUST NOT use standard Node.js built-ins (e.g., `fs`, `path`,
|
|
27
|
+
`child_process`).
|
|
28
|
+
- If cryptography is needed, use the standard Web Crypto API, not Node's
|
|
29
|
+
`crypto`.
|
|
30
|
+
- Access all environment variables, R2 buckets, and Queues strictly through the
|
|
31
|
+
Hono Context bindings (`c.env`).
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { zValidator } from '@hono/zod-validator';
|
|
2
|
+
import { Hono } from 'hono';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
|
|
5
|
+
// EXAMPLE: Strict Cloudflare environment bindings
|
|
6
|
+
type Bindings = {
|
|
7
|
+
DB: D1Database;
|
|
8
|
+
STRIPE_SECRET_KEY: string;
|
|
9
|
+
MY_QUEUE: Queue;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const app = new Hono<{ Bindings: Bindings }>();
|
|
13
|
+
|
|
14
|
+
// EXAMPLE: Route with strict Zod validation and c.env access
|
|
15
|
+
app.post(
|
|
16
|
+
'/api/example',
|
|
17
|
+
zValidator(
|
|
18
|
+
'json',
|
|
19
|
+
z.object({
|
|
20
|
+
title: z.string().min(1),
|
|
21
|
+
}),
|
|
22
|
+
),
|
|
23
|
+
async (c) => {
|
|
24
|
+
const { title } = c.req.valid('json');
|
|
25
|
+
const _db = c.env.DB; // Access via Cloudflare bindings, NOT process.env
|
|
26
|
+
|
|
27
|
+
// Implementation here...
|
|
28
|
+
|
|
29
|
+
return c.json({ success: true, title }, 201);
|
|
30
|
+
},
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
export default app;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cloudflare-queue-manager
|
|
3
|
+
description:
|
|
4
|
+
Ensures idempotent and resilient background job execution on Cloudflare
|
|
5
|
+
Queues. Use when writing consumer handlers — design for at-least-once
|
|
6
|
+
delivery, wrap processing in try/catch with `message.retry()`, and order
|
|
7
|
+
cascading deletes so the database row drops last.
|
|
8
|
+
vendor: cloudflare
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Cloudflare Queue Lifecycle Manager
|
|
12
|
+
|
|
13
|
+
## Policy Capsule
|
|
14
|
+
|
|
15
|
+
- Design every consumer handler to be idempotent; assume at-least-once delivery and treat duplicate messages as expected.
|
|
16
|
+
- Wrap message processing in `try/catch`; never let an unhandled throw kill the worker mid-batch.
|
|
17
|
+
- Use `message.retry()` for transient failures rather than crashing the whole consumer.
|
|
18
|
+
- For cascading deletions, delete third-party assets (Mux, R2, external APIs) first and the database row last to avoid orphans.
|
|
19
|
+
- Log each message ID and processing outcome so retried duplicates are traceable across replays.
|
|
20
|
+
|
|
21
|
+
**Description:** Ensures idempotent and resilient background job execution.
|
|
22
|
+
|
|
23
|
+
**Instruction:** You are writing consumer logic for Cloudflare Queues.
|
|
24
|
+
|
|
25
|
+
- Always assume messages can be delivered more than once; design all worker
|
|
26
|
+
logic for strict idempotency.
|
|
27
|
+
- Wrap processing logic in `try/catch` blocks.
|
|
28
|
+
- If a sub-task fails (e.g., deleting a video from a third-party API), do NOT
|
|
29
|
+
crash the whole worker. Log the error and use `message.retry()` strategically.
|
|
30
|
+
- For cascading deletions, ensure the database deletion happens LAST, only after
|
|
31
|
+
third-party assets (Mux, R2) are confirmed deleted, to avoid orphaned data.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cloudflare-workers
|
|
3
|
+
description:
|
|
4
|
+
Builds and deploys high-performance edge logic on Cloudflare Workers. Use
|
|
5
|
+
when working within Workers' 128MB memory and 5–50ms CPU constraints,
|
|
6
|
+
integrating KV/R2/D1 storage, or writing Wrangler-managed edge-first
|
|
7
|
+
request/response code.
|
|
8
|
+
vendor: cloudflare
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Skill: Cloudflare Workers
|
|
12
|
+
|
|
13
|
+
## Policy Capsule
|
|
14
|
+
|
|
15
|
+
- Respect the Worker resource envelope: 128MB memory and 5–50ms CPU per invocation; design code paths to fit inside it.
|
|
16
|
+
- Configure and deploy via Wrangler; do not hand-roll deployment scripts.
|
|
17
|
+
- Pick the right storage primitive: KV for simple key-value, R2 for object storage, D1 for relational data.
|
|
18
|
+
- Use the standard Fetch API for outgoing HTTP; never reach for Node-flavored HTTP clients.
|
|
19
|
+
- Store secrets with `wrangler secret`; never commit secrets to source.
|
|
20
|
+
- Minimize sub-requests per invocation to stay under platform limits.
|
|
21
|
+
- Stream large payloads via `TransformStream`; never buffer them entirely into memory.
|
|
22
|
+
- Install a global error handler so a single failing request does not take down the worker.
|
|
23
|
+
|
|
24
|
+
Guidelines for building and deploying high-performance serverless logic at the
|
|
25
|
+
edge.
|
|
26
|
+
|
|
27
|
+
## 1. Core Principles
|
|
28
|
+
|
|
29
|
+
- **Edge First:** Run code as close to the user as possible.
|
|
30
|
+
- **Resource Constraints:** Be mindful of the 128MB memory limit and the strict
|
|
31
|
+
CPU time limits (e.g., 5-50ms) for workers.
|
|
32
|
+
- **Cold Starts:** Workers have near-zero cold starts, but external resource
|
|
33
|
+
initialization must be optimized.
|
|
34
|
+
|
|
35
|
+
## 2. Technical Standards
|
|
36
|
+
|
|
37
|
+
- **Routing:** Use `Wrangler` for configuration and local development.
|
|
38
|
+
- **Storage Integration:** Use `KV` for simple key-value needs, `R2` for object
|
|
39
|
+
storage, and `D1` for relational data.
|
|
40
|
+
- **Fetch API:** Always use the standard Fetch API for outgoing network
|
|
41
|
+
requests.
|
|
42
|
+
- **Security:** Use `wrangler secret` for environment variables and API keys.
|
|
43
|
+
|
|
44
|
+
## 3. Best Practices
|
|
45
|
+
|
|
46
|
+
- **Sub-requests:** Minimize the number of sub-requests per worker invocation to
|
|
47
|
+
stay within limits.
|
|
48
|
+
- **Streaming:** Use the `TransformStream` API for processing large payloads
|
|
49
|
+
without loading everything into memory.
|
|
50
|
+
- **Error Handling:** Implement robust global error handlers to prevent total
|
|
51
|
+
worker failure on a single request error.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: highlevel-crm
|
|
3
|
+
description:
|
|
4
|
+
Integrates with the HighLevel (GoHighLevel) CRM API v2 and its automation
|
|
5
|
+
engine. Use when synchronizing data via OAuth 2.0, building custom widgets,
|
|
6
|
+
handling sub-account `locationId` scoping, or implementing webhook-driven
|
|
7
|
+
workflows with rate-limit-aware retries.
|
|
8
|
+
vendor: highlevel
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Skill: HighLevel CRM (GoHighLevel)
|
|
12
|
+
|
|
13
|
+
## Policy Capsule
|
|
14
|
+
|
|
15
|
+
- Integrate with HighLevel exclusively through API v2 over OAuth 2.0; never hardcode credentials.
|
|
16
|
+
- Manage `access_token` and `refresh_token` rotation in code — assume tokens expire and refresh proactively.
|
|
17
|
+
- Include `locationId` on every API request to scope writes to the correct sub-account.
|
|
18
|
+
- Prefer HighLevel's native automation engine; reach for custom code only when native workflows cannot express the requirement.
|
|
19
|
+
- Implement exponential-backoff retry to respect HighLevel's API rate limits.
|
|
20
|
+
- Use email as the primary key for contact deduplication; do not rely on CRM-internal IDs for cross-system joins.
|
|
21
|
+
- Drive event-driven flows through HighLevel webhooks rather than polling.
|
|
22
|
+
- Test integrations against a sandbox sub-account before pointing them at live data.
|
|
23
|
+
|
|
24
|
+
Protocols for integrating with the HighLevel CRM API (v2) and building custom
|
|
25
|
+
widgets/automations.
|
|
26
|
+
|
|
27
|
+
## 1. Core Principles
|
|
28
|
+
|
|
29
|
+
- **API-First Integration:** Use the HighLevel API v2 for all data
|
|
30
|
+
synchronization, focusing on OAuth 2.0 security.
|
|
31
|
+
- **Workflow Automation:** Leverage HighLevel's internal automation engine
|
|
32
|
+
effectively; only use custom code when native workflows are insufficient.
|
|
33
|
+
- **Data Integrity:** Ensure all custom fields, tags, and contacts are mapped
|
|
34
|
+
accurately to prevent data corruption.
|
|
35
|
+
|
|
36
|
+
## 2. Technical Standards
|
|
37
|
+
|
|
38
|
+
- **OAuth 2.0:** Securely manage `access_token` and `refresh_token` flows. Never
|
|
39
|
+
hardcode credentials.
|
|
40
|
+
- **Webhooks:** Use webhooks to trigger application logic when events occur in
|
|
41
|
+
CRM (e.g., contact created, opportunity moved).
|
|
42
|
+
- **Rate Limiting:** Implement exponential backoff and retry logic to respect
|
|
43
|
+
HighLevel's API rate limits.
|
|
44
|
+
- **Location Context:** Always include the `locationId` in your API requests to
|
|
45
|
+
ensure data is scoped to the correct sub-account.
|
|
46
|
+
|
|
47
|
+
## 3. Best Practices
|
|
48
|
+
|
|
49
|
+
- **Custom Fields:** Use unique, descriptive names for custom fields and mapping
|
|
50
|
+
keys to avoid collisions.
|
|
51
|
+
- **Contact Sync:** Use email addresses as the primary identifier for contact
|
|
52
|
+
deduplication.
|
|
53
|
+
- **Testing:** Always use a sandbox/test sub-account in HighLevel before
|
|
54
|
+
deploying integrations to live accounts.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sqlite-drizzle-expert
|
|
3
|
+
description:
|
|
4
|
+
Enforces SQLite dialect for Drizzle ORM and Turso (libSQL). Use when writing
|
|
5
|
+
schema or queries with `drizzle-orm/sqlite-core` — avoid PostgreSQL-only
|
|
6
|
+
types (`serial`, `jsonb`, `uuid`), use `text()` for IDs and dates, and
|
|
7
|
+
define relations explicitly via the `relations` API.
|
|
8
|
+
vendor: drizzle
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# SQLite Drizzle Expert
|
|
12
|
+
|
|
13
|
+
## Policy Capsule
|
|
14
|
+
|
|
15
|
+
- Import only from `drizzle-orm/sqlite-core`; never mix in PostgreSQL or MySQL Drizzle modules.
|
|
16
|
+
- Never use Postgres-only types (`serial`, `jsonb`, `uuid`) — SQLite does not implement them.
|
|
17
|
+
- Use `text()` for IDs, enums, and date columns.
|
|
18
|
+
- Use `integer({ mode: 'boolean' })` for booleans; SQLite has no native boolean type.
|
|
19
|
+
- Define every relation explicitly with Drizzle's `relations` API rather than relying on implicit foreign-key inference.
|
|
20
|
+
|
|
21
|
+
**Description:** Enforces SQLite dialect for Drizzle ORM and Turso.
|
|
22
|
+
|
|
23
|
+
**Instruction:** You are modifying a Turso (libSQL) database using Drizzle ORM.
|
|
24
|
+
You MUST strictly use `drizzle-orm/sqlite-core`.
|
|
25
|
+
|
|
26
|
+
- NEVER use PostgreSQL-specific types like `serial`, `jsonb`, or `uuid`.
|
|
27
|
+
- Use `text()` for IDs, Enums, and dates.
|
|
28
|
+
- Use `integer({ mode: 'boolean' })` for booleans.
|
|
29
|
+
- Ensure all relations are explicitly defined using Drizzle's `relations` API.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { relations, sql } from 'drizzle-orm';
|
|
2
|
+
import { integer, sqliteTable, text } from 'drizzle-orm/sqlite-core';
|
|
3
|
+
|
|
4
|
+
// EXAMPLE: Standard SQLite table optimized for Turso
|
|
5
|
+
export const users = sqliteTable('users', {
|
|
6
|
+
id: text('id').primaryKey(), // DO NOT use uuid() or serial()
|
|
7
|
+
email: text('email').notNull().unique(),
|
|
8
|
+
isActive: integer('is_active', { mode: 'boolean' }).default(true), // SQLite boolean workaround
|
|
9
|
+
createdAt: text('created_at').default(sql`CURRENT_TIMESTAMP`).notNull(),
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
export const posts = sqliteTable('posts', {
|
|
13
|
+
id: text('id').primaryKey(),
|
|
14
|
+
authorId: text('author_id')
|
|
15
|
+
.notNull()
|
|
16
|
+
.references(() => users.id, { onDelete: 'cascade' }),
|
|
17
|
+
content: text('content').notNull(),
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
// EXAMPLE: Explicit relations definition
|
|
21
|
+
export const usersRelations = relations(users, ({ many }) => ({
|
|
22
|
+
posts: many(posts),
|
|
23
|
+
}));
|
|
24
|
+
|
|
25
|
+
export const postsRelations = relations(posts, ({ one }) => ({
|
|
26
|
+
author: one(users, {
|
|
27
|
+
fields: [posts.authorId],
|
|
28
|
+
references: [users.id],
|
|
29
|
+
}),
|
|
30
|
+
}));
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: stripe-integration
|
|
3
|
+
description:
|
|
4
|
+
Implements secure Stripe payments and subscription billing. Use when handling
|
|
5
|
+
card data (PCI compliance via Elements/Checkout), verifying webhook
|
|
6
|
+
signatures, attaching `idempotencyKey` to mutations, or treating the
|
|
7
|
+
server-side webhook as the source of truth for entitlement changes.
|
|
8
|
+
vendor: stripe
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Skill: Stripe Payments & Billing
|
|
12
|
+
|
|
13
|
+
## Policy Capsule
|
|
14
|
+
|
|
15
|
+
- Never let raw card data touch your servers; collect payment details through Stripe Elements or Checkout.
|
|
16
|
+
- Treat the server-side webhook as the source of truth for entitlement changes; never trust client-side success redirects.
|
|
17
|
+
- Verify the `Stripe-Signature` header against the raw request body using the configured webhook secret before parsing any payload.
|
|
18
|
+
- Attach an `idempotencyKey` to every Stripe API mutation to prevent duplicate charges on retry.
|
|
19
|
+
- Use the official `stripe` Node SDK for backend calls; do not hand-roll HTTP requests.
|
|
20
|
+
- Store Stripe object IDs (Customer, Price, Subscription) in your database — never store PCI-sensitive card data.
|
|
21
|
+
- Log Stripe event IDs for traceability, but exclude sensitive customer data from logs.
|
|
22
|
+
- Use Stripe's test environment and test cards for all development and QA.
|
|
23
|
+
|
|
24
|
+
Standard procedures for secure and robust payment + subscription billing
|
|
25
|
+
integration using Stripe.
|
|
26
|
+
|
|
27
|
+
## 1. Core Principles
|
|
28
|
+
|
|
29
|
+
- **PCI Compliance:** Never let sensitive card data touch your servers. Use
|
|
30
|
+
Stripe Elements or Checkout.
|
|
31
|
+
- **Webhooks are Mandatory:** Never rely on successful client-side redirects to
|
|
32
|
+
confirm payments. Always verify via webhooks. Webhook handlers MUST verify the
|
|
33
|
+
`Stripe-Signature` header using the raw request body and the configured
|
|
34
|
+
webhook secret before parsing any data.
|
|
35
|
+
- **Idempotency:** Every Stripe API mutation MUST include an `idempotencyKey` to
|
|
36
|
+
prevent duplicate charges or state changes during network retries.
|
|
37
|
+
- **Server is Source of Truth:** Never trust client-side success states for
|
|
38
|
+
granting access or upgrading tiers; always rely on the asynchronous
|
|
39
|
+
server-side webhook to update the database.
|
|
40
|
+
|
|
41
|
+
## 2. Technical Standards
|
|
42
|
+
|
|
43
|
+
- **Stripe SDK:** Use the official `stripe` Node.js library for backend
|
|
44
|
+
operations.
|
|
45
|
+
- **Elements / Checkout:** Use Stripe Elements for custom-branded checkout or
|
|
46
|
+
Checkout for the fastest implementation.
|
|
47
|
+
- **Error Handling:** Gracefully handle payment failures, card declines, and
|
|
48
|
+
expired sessions.
|
|
49
|
+
|
|
50
|
+
## 3. Best Practices
|
|
51
|
+
|
|
52
|
+
- **Test Mode:** Use Stripe's test environment and test card numbers for all
|
|
53
|
+
development and QA.
|
|
54
|
+
- **Logging:** Log Stripe event IDs for troubleshooting, but exclude any
|
|
55
|
+
sensitive customer data.
|
|
56
|
+
- **Sub-records:** Store Stripe IDs (Customer ID, Price ID, Subscription ID) in
|
|
57
|
+
your database, not PCI-sensitive data.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Description: Forwards Stripe webhooks to the local Cloudflare Worker environment.
|
|
3
|
+
# Prerequisite: Ensure stripe-cli is installed and authenticated.
|
|
4
|
+
|
|
5
|
+
echo "Starting Stripe webhook forwarding to local Hono API..."
|
|
6
|
+
echo "Ensure your worker is running on port 8787"
|
|
7
|
+
|
|
8
|
+
# Replace 8787 with the actual port your local Cloudflare worker uses
|
|
9
|
+
stripe listen --forward-to localhost:8787/v1/webhooks/stripe
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: turso-sqlite
|
|
3
|
+
description:
|
|
4
|
+
Develops with Turso's distributed SQLite (libSQL) platform. Use when working
|
|
5
|
+
with the `@libsql/client` driver — leverage edge replicas for low-latency
|
|
6
|
+
reads, route writes to the primary, and use parameterized queries plus a
|
|
7
|
+
versioned migration tool (drizzle-kit, atlas) for schema changes.
|
|
8
|
+
vendor: turso
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Skill: Turso (SQLite)
|
|
12
|
+
|
|
13
|
+
## Policy Capsule
|
|
14
|
+
|
|
15
|
+
- Use the `@libsql/client` driver for all database operations; do not mix in other SQLite clients.
|
|
16
|
+
- Always use parameterized queries (`?` or `:name`); never interpolate user input into SQL strings.
|
|
17
|
+
- Route reads to the nearest edge replica and writes to the primary; do not write to a replica.
|
|
18
|
+
- Manage schema changes through a versioned migration tool (`drizzle-kit`, `atlas`) checked into git; never hand-mutate production schema.
|
|
19
|
+
- Reuse the libSQL client instance within a worker invocation to avoid repeated handshake overhead.
|
|
20
|
+
- Audit slow queries with `EXPLAIN QUERY PLAN` and add indexes where the plan shows a full scan on a large table.
|
|
21
|
+
|
|
22
|
+
Rules for developing with Turso's distributed SQLite database platform.
|
|
23
|
+
|
|
24
|
+
## 1. Core Principles
|
|
25
|
+
|
|
26
|
+
- **Edge Efficiency:** Leverage Turso's low-latency distribution for edge
|
|
27
|
+
applications.
|
|
28
|
+
- **SQLite Simplicity:** Use standard SQL syntax. SQLite is powerful—don't
|
|
29
|
+
over-engineer with complex ORMs unless necessary.
|
|
30
|
+
- **Replication:** Understand the primary/replica architecture for
|
|
31
|
+
geographically distributed workloads.
|
|
32
|
+
|
|
33
|
+
## 2. Technical Standards
|
|
34
|
+
|
|
35
|
+
- **Driver Usage:** Use the `@libsql/client` driver for all database operations.
|
|
36
|
+
- **Parameterized Queries:** Never use string interpolation for queries. Always
|
|
37
|
+
use placeholders (`?` or `:name`) to prevent SQL injection.
|
|
38
|
+
- **Migrations:** Use a structured migration tool (e.g., `drizzle-kit` or
|
|
39
|
+
`atlas`) to manage schema changes versioned in git.
|
|
40
|
+
|
|
41
|
+
## 3. Best Practices
|
|
42
|
+
|
|
43
|
+
- **Connection Management:** Reuse database client instances within a worker
|
|
44
|
+
invocation to minimize handshake overhead.
|
|
45
|
+
- **Read-Local, Write-Primary:** Direct read operations to the nearest replica
|
|
46
|
+
and write operations to the primary instance.
|
|
47
|
+
- **Profiling:** Use `EXPLAIN QUERY PLAN` to audit slow queries and ensure
|
|
48
|
+
proper indexing of large tables.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: astro
|
|
3
|
+
description:
|
|
4
|
+
Builds ultra-fast content-driven websites with Astro. Use when defaulting to
|
|
5
|
+
SSG, opting into SSR only for dynamic data, picking the most restrictive
|
|
6
|
+
`client:*` hydration directive, leveraging Server Islands (`server:defer`),
|
|
7
|
+
Astro Actions for type-safe mutations, and the Content Layer with Zod-
|
|
8
|
+
validated collections.
|
|
9
|
+
vendor: astro
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Skill: Astro (Iron)
|
|
13
|
+
|
|
14
|
+
## Policy Capsule
|
|
15
|
+
|
|
16
|
+
- Default to SSG; opt into SSR only when a route requires per-request dynamic data.
|
|
17
|
+
- Ship zero JS by default — `.astro` components must not bundle client JavaScript unless a `client:*` directive is set explicitly.
|
|
18
|
+
- For personalized or dynamic islands, prefer `server:defer` (Server Islands) over shipping a fully hydrated client island.
|
|
19
|
+
- Use the most restrictive hydration directive that meets the interaction: `client:load` only for immediate interactivity, `client:visible` for below-the-fold, `client:idle` for non-critical logic.
|
|
20
|
+
- Handle data mutations and form submissions through Astro Actions, not ad-hoc fetch handlers, to preserve type safety.
|
|
21
|
+
- Source content through the Content Layer API with Zod-validated collections in `src/content/config.ts`.
|
|
22
|
+
- Use the built-in `<Image />` and `<Picture />` components for image optimization rather than raw `<img>` tags.
|
|
23
|
+
- Inject SEO metadata (`title`, `meta`, `og:image`, `canonical`) from a shared layout component.
|
|
24
|
+
|
|
25
|
+
Guidelines and best practices for building ultra-fast content-driven websites
|
|
26
|
+
using Astro.
|
|
27
|
+
|
|
28
|
+
## 1. Core Principles
|
|
29
|
+
|
|
30
|
+
- **Static First:** Default to SSG (Static Site Generation). Use SSR only when
|
|
31
|
+
dynamic user data or real-time interaction is required.
|
|
32
|
+
- **Island Architecture:** Use standard HTML for most of the page.
|
|
33
|
+
- **Server Islands (Astro 5):** Use the `server:defer` directive for components
|
|
34
|
+
that depend on personalized or dynamic data.
|
|
35
|
+
- **Astro Actions:** Use built-in Actions for all data mutations and form
|
|
36
|
+
submissions to ensure type-safety.
|
|
37
|
+
- **Zero JS by Default:** Ensure components use `.astro` syntax and do not ship
|
|
38
|
+
any JavaScript to the client unless explicitly requested via `client:*`
|
|
39
|
+
directives.
|
|
40
|
+
|
|
41
|
+
## 2. Technical Standards
|
|
42
|
+
|
|
43
|
+
- **Component Structure:**
|
|
44
|
+
- Logic (JS/TS) in the component script (top `---` fence).
|
|
45
|
+
- Markup in the HTML template.
|
|
46
|
+
- Scoped CSS in the `<style>` block.
|
|
47
|
+
- **Content Layer API:** Always use the new Content Layer for data sourcing.
|
|
48
|
+
Manage collections via `src/content/config.ts` with Zod schema validation for
|
|
49
|
+
all metadata.
|
|
50
|
+
- **Hydration Directives:** Use the most restrictive directive possible:
|
|
51
|
+
- `client:load` for immediate interactivity.
|
|
52
|
+
- `client:visible` for elements below the fold.
|
|
53
|
+
- `client:idle` for non-critical logic.
|
|
54
|
+
|
|
55
|
+
## 3. Best Practices
|
|
56
|
+
|
|
57
|
+
- **Image Optimization:** Always use the `<Image />` or `<Picture />` components
|
|
58
|
+
for automatic format conversion and resizing.
|
|
59
|
+
- **Metadata/SEO:** Use a layout component to inject standard SEO tags (`title`,
|
|
60
|
+
`meta`, `og:image`, `canonical`).
|
|
61
|
+
- **View Transitions:** Use Astro's built-in view transitions for SPA-like
|
|
62
|
+
navigation without the performance overhead.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: astro-react-island-strategist
|
|
3
|
+
description:
|
|
4
|
+
Maintains strict boundaries between Astro server components and React client
|
|
5
|
+
islands in hybrid Astro/React workspaces. Use when keeping `.astro` files
|
|
6
|
+
for static HTML/SEO and `.tsx` for interactive islands — embed React only
|
|
7
|
+
with explicit `client:*` directives and pass serializable props.
|
|
8
|
+
vendor: astro
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Astro & React Island Strategist
|
|
12
|
+
|
|
13
|
+
## Policy Capsule
|
|
14
|
+
|
|
15
|
+
- Use `.astro` files for static HTML generation, routing, and SEO; do not reach for React when Astro suffices.
|
|
16
|
+
- Use React `.tsx` files only for genuinely interactive UI islands, not for static rendering.
|
|
17
|
+
- Embed a React component in Astro only with an explicit `client:*` directive (`client:load`, `client:idle`, `client:visible`).
|
|
18
|
+
- Pick the most restrictive `client:*` directive that satisfies the interaction — prefer `client:idle` or `client:visible` over `client:load` whenever possible.
|
|
19
|
+
- Pass only serializable data as props across the Astro → React island boundary; never pass functions or class instances.
|
|
20
|
+
|
|
21
|
+
**Description:** Maintains strict boundaries between Astro server components and
|
|
22
|
+
React client islands.
|
|
23
|
+
|
|
24
|
+
**Instruction:** For the `@repo/web` workspace:
|
|
25
|
+
|
|
26
|
+
- Use `.astro` files strictly for static HTML generation, routing, and SEO.
|
|
27
|
+
- Use React `.tsx` files ONLY for highly interactive UI components (islands).
|
|
28
|
+
- When embedding a React component in an Astro file, you MUST explicitly use
|
|
29
|
+
client directives (e.g., `client:load` or `client:idle`).
|
|
30
|
+
- Only pass serializable data as props from Astro to React.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: expo-react-native-developer
|
|
3
|
+
description:
|
|
4
|
+
Prevents DOM element usage in React Native (Expo) workspaces. Use when
|
|
5
|
+
writing components for Expo apps — `<View>`, `<Text>`, `<TouchableOpacity>`
|
|
6
|
+
instead of `<div>`/`<span>`/`<p>`, no `window`/`document`, and styling
|
|
7
|
+
through the project's established solution.
|
|
8
|
+
vendor: expo
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Expo React Native Developer
|
|
12
|
+
|
|
13
|
+
## Policy Capsule
|
|
14
|
+
|
|
15
|
+
- Never use HTML DOM elements (`<div>`, `<span>`, `<p>`, `<button>`, etc.) inside Expo or React Native components.
|
|
16
|
+
- Use React Native primitives instead: `<View>`, `<Text>`, `<TouchableOpacity>`, `<Pressable>`, `<ScrollView>`.
|
|
17
|
+
- Never reference browser globals (`window`, `document`, `localStorage`) in React Native code paths.
|
|
18
|
+
- Route all styling through the project's established styling solution; do not introduce a parallel CSS pipeline.
|
|
19
|
+
- Treat the `@repo/mobile` workspace as DOM-free — any DOM symbol that appears is a hallucination and must be replaced.
|
|
20
|
+
|
|
21
|
+
**Description:** Prevents DOM element usage in React Native.
|
|
22
|
+
|
|
23
|
+
**Instruction:** For the `@repo/mobile` workspace:
|
|
24
|
+
|
|
25
|
+
- YOU MUST NOT use HTML DOM elements like `<div>`, `<span>`, or `<p>`.
|
|
26
|
+
- Use strict React Native primitives: `<View>`, `<Text>`, `<TouchableOpacity>`,
|
|
27
|
+
etc.
|
|
28
|
+
- Ensure all styling uses the established styling solution.
|
|
29
|
+
- Never use `window` or `document` objects.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: google-analytics-v4
|
|
3
|
+
description:
|
|
4
|
+
Implements privacy-compliant event tracking with Google Analytics 4. Use
|
|
5
|
+
when wiring analytics that must comply with GDPR/CCPA via Consent Mode V2 —
|
|
6
|
+
`snake_case` event names, no PII to GA servers, GTM-driven event firing,
|
|
7
|
+
and DebugView verification before deploy.
|
|
8
|
+
vendor: google
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Skill: Google Analytics 4 (GA4)
|
|
12
|
+
|
|
13
|
+
## Policy Capsule
|
|
14
|
+
|
|
15
|
+
- Implement Consent Mode V2 and respect GDPR/CCPA; never send PII to GA servers.
|
|
16
|
+
- Track meaningful business actions (e.g. `start_checkout`, `share_article`) rather than relying solely on page views.
|
|
17
|
+
- Use `snake_case` for every event name and parameter — GA4 enforces this convention.
|
|
18
|
+
- Fire all events through Google Tag Manager rather than embedding measurement IDs directly in application code.
|
|
19
|
+
- Define critical user attributes (e.g. `user_type`, `pricing_plan`) as custom dimensions on the GA4 property.
|
|
20
|
+
- Verify every new event in GA4 DebugView before deploying to production.
|
|
21
|
+
- Filter development and internal traffic out of the production GA4 property.
|
|
22
|
+
- Keep IP anonymization enabled and configure cross-domain tracking when traffic spans multiple origins.
|
|
23
|
+
|
|
24
|
+
Guidelines for privacy-compliant and data-driven event tracking using GA4.
|
|
25
|
+
|
|
26
|
+
## 1. Core Principles
|
|
27
|
+
|
|
28
|
+
- **Privacy Compliance:** Adhere to GDPR and CCPA. Implement Consent Mode V2 and
|
|
29
|
+
never send PII to GA servers.
|
|
30
|
+
- **Event-Driven:** Focus on meaningful user actions (e.g., "start_checkout",
|
|
31
|
+
"share_article") rather than just page views.
|
|
32
|
+
- **Data Accuracy:** Filter out development and internal traffic from production
|
|
33
|
+
property data.
|
|
34
|
+
|
|
35
|
+
## 2. Technical Standards
|
|
36
|
+
|
|
37
|
+
- **GTM Integration:** Use Google Tag Manager for event firing to decouple
|
|
38
|
+
marketing tags from core application code.
|
|
39
|
+
- **Custom Dimensions:** Define critical data points (e.g., `user_type`,
|
|
40
|
+
`pricing_plan`) as custom dimensions in the GA4 property.
|
|
41
|
+
- **Enhanced Measurement:** Leverage GA4's built-in tracking for scrolls,
|
|
42
|
+
outbound clicks, and site searches.
|
|
43
|
+
|
|
44
|
+
## 3. Best Practices
|
|
45
|
+
|
|
46
|
+
- **Naming Convention:** Use `snake_case` for event names and parameters.
|
|
47
|
+
- **Debug View:** Use the GA4 DebugView in the browser to verify events fire
|
|
48
|
+
correctly before deploying.
|
|
49
|
+
- **Anonymization:** Ensure IP anonymization is enabled (default in GA4) and
|
|
50
|
+
cross-domain tracking is configured if necessary.
|