mandrel 1.93.0 → 2.0.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 +59 -73
- package/.agents/agents/acceptance-critic.md +129 -0
- package/.agents/agents/story-worker.md +161 -0
- package/.agents/docs/SDLC.md +489 -1285
- package/.agents/docs/agentrc-reference.json +177 -67
- package/.agents/docs/configuration.md +108 -136
- package/.agents/docs/execution-reference.md +44 -22
- package/.agents/docs/quality-gates.md +13 -19
- package/.agents/docs/workflows.md +3 -3
- package/.agents/instructions.md +107 -108
- package/.agents/rules/ci-remediation.md +8 -12
- package/.agents/rules/git-conventions-reference.md +224 -0
- package/.agents/rules/git-conventions.md +42 -223
- package/.agents/rules/security-baseline.md +5 -0
- package/.agents/rules/testing-standards.md +106 -13
- package/.agents/schemas/acceptance-eval-verdict.schema.json +1 -1
- package/.agents/schemas/agentrc.schema.json +71 -201
- package/.agents/schemas/lifecycle/ledger-record.schema.json +1 -1
- package/.agents/schemas/lifecycle/retro.end.schema.json +1 -1
- package/.agents/schemas/risk-verdict.schema.json +0 -13
- package/.agents/scripts/acceptance-eval.js +62 -18
- package/.agents/scripts/agents-bootstrap-github.js +1 -1
- package/.agents/scripts/analyze-execution.js +1 -1
- package/.agents/scripts/audit-to-stories.js +7 -7
- package/.agents/scripts/boot-sweep.js +1 -1
- package/.agents/scripts/check-context-budget.js +62 -5
- package/.agents/scripts/check-lifecycle-lint.js +6 -9
- package/.agents/scripts/check-prepush-recovery.js +1 -1
- package/.agents/scripts/cleanup-repo-test-temp.js +6 -1
- package/.agents/scripts/diagnose-friction.js +0 -6
- package/.agents/scripts/lib/Logger.js +6 -10
- package/.agents/scripts/lib/audit-suite/runner.js +2 -2
- package/.agents/scripts/lib/audit-suite/selector.js +5 -5
- package/.agents/scripts/lib/audit-to-stories/{seed-epic-from-findings.js → seed-from-findings.js} +9 -9
- package/.agents/scripts/lib/baselines/kernel.js +206 -18
- package/.agents/scripts/lib/baselines/kinds/maintainability.js +0 -4
- package/.agents/scripts/lib/baselines/reader.js +1 -6
- package/.agents/scripts/lib/bdd-runner-detect.js +5 -9
- package/.agents/scripts/lib/bootstrap/issue-forms-template.js +32 -33
- package/.agents/scripts/lib/bootstrap/project-bootstrap.js +56 -18
- package/.agents/scripts/lib/checks/core-bare-clean.js +2 -2
- package/.agents/scripts/lib/checks/index.js +2 -1
- package/.agents/scripts/lib/checks/story-init-not-backgrounded.js +23 -21
- package/.agents/scripts/lib/cli/standard-args.js +13 -22
- package/.agents/scripts/lib/cli-args.js +16 -7
- package/.agents/scripts/lib/close-validation/gates.js +160 -22
- package/.agents/scripts/lib/config/acceptance-eval.js +52 -5
- package/.agents/scripts/lib/config/ci.js +6 -31
- package/.agents/scripts/lib/config/delivery-routing.js +103 -0
- package/.agents/scripts/lib/config/explain.js +57 -36
- package/.agents/scripts/lib/config/limits.js +17 -58
- package/.agents/scripts/lib/config/paths.js +0 -2
- package/.agents/scripts/lib/config/quality.js +1 -1
- package/.agents/scripts/lib/config/runners.js +17 -50
- package/.agents/scripts/lib/config/temp-paths.js +19 -14
- package/.agents/scripts/lib/config/worktree-isolation.js +0 -5
- package/.agents/scripts/lib/config-resolver.js +3 -8
- package/.agents/scripts/lib/config-settings-schema-delivery.js +46 -136
- package/.agents/scripts/lib/config-settings-schema-quality.js +17 -14
- package/.agents/scripts/lib/config-settings-schema.js +52 -38
- package/.agents/scripts/lib/dependency-parser.js +3 -2
- package/.agents/scripts/lib/doc-tiers.js +39 -4
- package/.agents/scripts/lib/duplicate-search.js +211 -41
- package/.agents/scripts/lib/feedback-loop/retro-proposals-graduator.js +1 -1
- package/.agents/scripts/lib/findings/promote-finding.js +5 -5
- package/.agents/scripts/lib/framework-version.js +2 -3
- package/.agents/scripts/lib/git-branch-cleanup.js +1 -10
- package/.agents/scripts/lib/git-branch-lifecycle.js +17 -22
- package/.agents/scripts/lib/git-utils.js +32 -6
- package/.agents/scripts/lib/github/framework-repo.js +6 -0
- package/.agents/scripts/lib/label-constants.js +10 -23
- package/.agents/scripts/lib/label-taxonomy.js +9 -43
- package/.agents/scripts/lib/observability/active-story-env.js +112 -3
- package/.agents/scripts/lib/observability/hook-heartbeat.js +187 -0
- package/.agents/scripts/lib/observability/source-classifier.js +3 -3
- package/.agents/scripts/lib/observability/tool-trace-hook.js +15 -4
- package/.agents/scripts/lib/onboard/init-tail.js +1 -3
- package/.agents/scripts/lib/orchestration/acceptance-clusters.js +111 -0
- package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +32 -4
- package/.agents/scripts/lib/orchestration/audit-lens-routing.js +128 -0
- package/.agents/scripts/lib/orchestration/bookkeeping-outbox.js +273 -0
- package/.agents/scripts/lib/orchestration/ceremony-routing.js +204 -0
- package/.agents/scripts/lib/orchestration/code-review.js +20 -268
- package/.agents/scripts/lib/orchestration/column-sync.js +1 -1
- package/.agents/scripts/lib/orchestration/consolidation-precondition.js +1 -1
- package/.agents/scripts/lib/orchestration/context-envelope.js +2 -5
- package/.agents/scripts/lib/orchestration/docs-digest.js +8 -8
- package/.agents/scripts/lib/orchestration/file-assumptions.js +7 -13
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/cli.js +1 -1
- package/.agents/scripts/lib/orchestration/lifecycle/emit-loop-tick.js +8 -8
- package/.agents/scripts/lib/orchestration/lifecycle/emit-story-heartbeat.js +2 -2
- package/.agents/scripts/lib/orchestration/lifecycle/ledger-writer.js +6 -3
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/README.md +17 -43
- package/.agents/scripts/lib/orchestration/lint-baseline-service.js +4 -4
- package/.agents/scripts/lib/orchestration/merge-block-class.js +1 -1
- package/.agents/scripts/lib/orchestration/phase-runner.js +3 -2
- package/.agents/scripts/lib/orchestration/plan-context.js +248 -266
- package/.agents/scripts/lib/orchestration/plan-critic-conditions.js +3 -2
- package/.agents/scripts/lib/orchestration/plan-critics-evaluate.js +1 -1
- package/.agents/scripts/lib/orchestration/plan-navigation.js +92 -0
- package/.agents/scripts/lib/orchestration/plan-persist/fan-out-gate.js +61 -0
- package/.agents/scripts/lib/orchestration/plan-persist/persist-helpers.js +97 -0
- package/.agents/scripts/lib/orchestration/plan-persist/run-plan-persist.js +223 -854
- package/.agents/scripts/lib/orchestration/plan-persist/story-ops.js +361 -0
- package/.agents/scripts/lib/orchestration/plan-persist/summary.js +35 -108
- package/.agents/scripts/lib/orchestration/plan-reachability.js +9 -14
- package/.agents/scripts/lib/orchestration/plan-runner/worktree-sweep.js +1 -1
- package/.agents/scripts/lib/orchestration/{epic-plan-spec/phases → planning}/authoring-context.js +14 -14
- package/.agents/scripts/lib/orchestration/planning/decomposer-context.js +27 -0
- package/.agents/scripts/lib/orchestration/{epic-plan-spec/phases → planning}/risk-verdict.js +3 -4
- package/.agents/scripts/lib/orchestration/post-merge/phases/branch-cleanup.js +2 -2
- package/.agents/scripts/lib/orchestration/post-merge/phases/dashboard-refresh.js +8 -20
- package/.agents/scripts/lib/orchestration/post-merge/phases/worktree-reap.js +3 -2
- package/.agents/scripts/lib/orchestration/pr-base-guard.js +18 -28
- package/.agents/scripts/lib/orchestration/preflight-cache.js +5 -5
- package/.agents/scripts/lib/orchestration/remote-verifier.js +1 -1
- package/.agents/scripts/lib/orchestration/resolve-plan-run.js +155 -0
- package/.agents/scripts/lib/orchestration/resolves-token.js +1 -1
- package/.agents/scripts/lib/orchestration/retro-perf-heuristics.js +8 -8
- package/.agents/scripts/lib/orchestration/retro-proposals.js +140 -79
- package/.agents/scripts/lib/orchestration/review-depth.js +26 -12
- package/.agents/scripts/lib/orchestration/review-providers/codex.js +2 -2
- package/.agents/scripts/lib/orchestration/review-providers/review-provider-factory.js +21 -56
- package/.agents/scripts/lib/orchestration/run-epilogue.js +426 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/auto-merge.js +1 -1
- package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +1 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/code-review.js +95 -41
- package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +16 -13
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-block.js +40 -0
- package/.agents/scripts/lib/orchestration/single-story-close/runner.js +11 -3
- package/.agents/scripts/lib/orchestration/spec-freshness.js +14 -205
- package/.agents/scripts/lib/orchestration/spec-section-validator.js +4 -5
- package/.agents/scripts/lib/orchestration/spec-spill.js +60 -0
- package/.agents/scripts/lib/orchestration/split-policy-validator.js +188 -0
- package/.agents/scripts/lib/orchestration/story-close/emit-blocked.js +49 -0
- package/.agents/scripts/lib/orchestration/story-close/phases/code-review.js +15 -12
- package/.agents/scripts/lib/orchestration/story-follow-ups.js +237 -0
- package/.agents/scripts/lib/orchestration/story-init-remote.js +47 -0
- package/.agents/scripts/lib/orchestration/story-plan-state.js +48 -0
- package/.agents/scripts/lib/orchestration/{epic-runner → story-progress}/story-run-progress-writer.js +3 -3
- package/.agents/scripts/lib/orchestration/structured-comment-parser.js +1 -1
- package/.agents/scripts/lib/orchestration/task-body-validator.js +8 -18
- package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +11 -61
- package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +189 -373
- package/.agents/scripts/lib/orchestration/ticket-validator.js +3 -8
- package/.agents/scripts/lib/orchestration/ticketing/bulk.js +0 -25
- package/.agents/scripts/lib/orchestration/ticketing/reads.js +29 -26
- package/.agents/scripts/lib/orchestration/ticketing/transition.js +5 -5
- package/.agents/scripts/lib/planning-corpus.js +16 -11
- package/.agents/scripts/lib/preflight-runner.js +2 -2
- package/.agents/scripts/lib/provider-factory.js +1 -1
- package/.agents/scripts/lib/qa/coverage-verdict.js +5 -5
- package/.agents/scripts/lib/single-story/confirm-merge-follow-ups.js +36 -0
- package/.agents/scripts/lib/single-story-sweep/protection-ctx.js +1 -1
- package/.agents/scripts/lib/story-adjacency.js +11 -14
- package/.agents/scripts/lib/story-body/story-body.js +124 -70
- package/.agents/scripts/lib/story-plan.js +2 -4
- package/.agents/scripts/lib/templates/decomposer-prompts.js +46 -45
- package/.agents/scripts/lib/templates/spec-author-prompts.js +47 -45
- package/.agents/scripts/lib/{epic-body-sections.js → ticket-body-sections.js} +26 -26
- package/.agents/scripts/lib/validation-evidence.js +1 -1
- package/.agents/scripts/lib/wave-runner/ready-set.js +6 -6
- package/.agents/scripts/lib/workspace-provisioner.js +1 -1
- package/.agents/scripts/lib/worktree/lifecycle/reap.js +5 -7
- package/.agents/scripts/lint-issue-body.js +71 -40
- package/.agents/scripts/mandrel-update-preflight.js +1 -1
- package/.agents/scripts/notify.js +4 -3
- package/.agents/scripts/plan-context.js +64 -74
- package/.agents/scripts/plan-persist.js +121 -280
- package/.agents/scripts/plan-run-epilogue.js +97 -0
- package/.agents/scripts/post-structured-comment.js +38 -0
- package/.agents/scripts/providers/github/issues.js +17 -33
- package/.agents/scripts/providers/github/mappers.js +0 -12
- package/.agents/scripts/providers/github/tickets.js +2 -5
- package/.agents/scripts/resolve-plan-run.js +117 -0
- package/.agents/scripts/signals-view.js +24 -19
- package/.agents/scripts/single-story-close.js +11 -14
- package/.agents/scripts/single-story-confirm-merge.js +39 -23
- package/.agents/scripts/single-story-init.js +29 -20
- package/.agents/scripts/stories-wave-tick.js +6 -6
- package/.agents/scripts/story-plan.js +26 -47
- package/.agents/scripts/sync-claude-agents.js +165 -0
- package/.agents/scripts/update-ticket-state.js +37 -15
- package/.agents/skills/core/analyze-execution/SKILL.md +21 -18
- package/.agents/skills/core/api-and-interface-design/SKILL.md +5 -3
- package/.agents/skills/core/code-review-and-quality/SKILL.md +63 -7
- package/.agents/skills/core/debugging-and-error-recovery/SKILL.md +1 -1
- package/.agents/skills/core/gates-and-baselines/SKILL.md +149 -0
- package/.agents/skills/core/idea-refinement/SKILL.md +8 -14
- package/.agents/skills/core/qa-coverage-mapping/SKILL.md +7 -7
- package/.agents/skills/core/scope-triage/SKILL.md +28 -172
- package/.agents/skills/skills.index.json +8 -418
- package/.agents/starter-agentrc.json +0 -5
- package/.agents/templates/agent-protocol.md +9 -10
- package/.agents/workflows/audit-architecture.md +3 -3
- package/.agents/workflows/audit-clean-code.md +3 -3
- package/.agents/workflows/audit-dependencies.md +3 -3
- package/.agents/workflows/audit-devops.md +3 -3
- package/.agents/workflows/audit-documentation.md +5 -5
- package/.agents/workflows/audit-lighthouse.md +3 -3
- package/.agents/workflows/audit-navigability.md +3 -2
- package/.agents/workflows/audit-performance.md +3 -3
- package/.agents/workflows/audit-privacy.md +3 -3
- package/.agents/workflows/audit-quality.md +3 -3
- package/.agents/workflows/audit-security.md +3 -3
- package/.agents/workflows/audit-seo.md +3 -3
- package/.agents/workflows/audit-sre.md +3 -3
- package/.agents/workflows/audit-to-stories.md +20 -20
- package/.agents/workflows/audit-ux-ui.md +3 -3
- package/.agents/workflows/deliver.md +122 -131
- package/.agents/workflows/git-cleanup.md +3 -4
- package/.agents/workflows/helpers/_merge-conflict-template.md +1 -1
- package/.agents/workflows/helpers/acceptance-self-eval.md +52 -40
- package/.agents/workflows/helpers/code-review.md +70 -193
- package/.agents/workflows/helpers/{single-story-deliver-reference.md → deliver-story-reference.md} +12 -14
- package/.agents/workflows/helpers/{single-story-deliver.md → deliver-story.md} +113 -139
- package/.agents/workflows/helpers/diagnose.md +10 -10
- package/.agents/workflows/helpers/mandrel-sync-config.md +1 -1
- package/.agents/workflows/helpers/parallel-tooling.md +1 -1
- package/.agents/workflows/helpers/signals.md +16 -16
- package/.agents/workflows/helpers/worktree-lifecycle.md +48 -64
- package/.agents/workflows/mandrel-update.md +3 -2
- package/.agents/workflows/plan.md +112 -145
- package/.agents/workflows/qa-assist.md +24 -30
- package/.agents/workflows/qa-explore.md +29 -38
- package/.agents/workflows/qa-run.md +2 -2
- package/README.md +9 -8
- package/docs/CHANGELOG.md +46 -0
- package/lib/cli/registry.js +95 -0
- package/lib/migrations/index.js +6 -5
- package/package.json +5 -3
- package/.agents/personas/architect.md +0 -113
- package/.agents/personas/devops-engineer.md +0 -38
- package/.agents/personas/engineer-mobile.md +0 -120
- package/.agents/personas/engineer-web.md +0 -111
- package/.agents/personas/engineer.md +0 -119
- package/.agents/personas/product.md +0 -94
- package/.agents/personas/project-manager.md +0 -114
- package/.agents/personas/qa-engineer.md +0 -95
- package/.agents/personas/refactorer.md +0 -113
- package/.agents/personas/security-engineer.md +0 -112
- package/.agents/personas/sre.md +0 -86
- package/.agents/personas/technical-writer.md +0 -101
- package/.agents/personas/ux-designer.md +0 -95
- package/.agents/schemas/dispatch-manifest.json +0 -232
- package/.agents/schemas/epic-spec.schema.json +0 -153
- package/.agents/scripts/acceptance-spec-reconciler.js +0 -642
- package/.agents/scripts/dispatcher.js +0 -295
- package/.agents/scripts/epic-audit-prepare.js +0 -497
- package/.agents/scripts/epic-audit-recheck.js +0 -274
- package/.agents/scripts/epic-deliver-note-intervention.js +0 -192
- package/.agents/scripts/epic-deliver-preflight.js +0 -462
- package/.agents/scripts/epic-deliver-prepare.js +0 -590
- package/.agents/scripts/epic-execute-record-wave.js +0 -449
- package/.agents/scripts/epic-plan-clarity.js +0 -211
- package/.agents/scripts/epic-plan-decompose.js +0 -54
- package/.agents/scripts/epic-plan-healthcheck.js +0 -581
- package/.agents/scripts/epic-plan-spec.js +0 -64
- package/.agents/scripts/epic-reconcile.js +0 -625
- package/.agents/scripts/lib/baseline-snapshot.js +0 -979
- package/.agents/scripts/lib/checks/epic-merge-lock-stale.js +0 -54
- package/.agents/scripts/lib/checks/stale-origin-epic.js +0 -49
- package/.agents/scripts/lib/config/lifecycle.js +0 -40
- package/.agents/scripts/lib/config/preflight.js +0 -58
- package/.agents/scripts/lib/config/retro.js +0 -77
- package/.agents/scripts/lib/epic-merge-lock.js +0 -322
- package/.agents/scripts/lib/epic-plan-clarity.js +0 -181
- package/.agents/scripts/lib/epic-plan-ideation.js +0 -261
- package/.agents/scripts/lib/orchestration/context-hydration-engine.js +0 -660
- package/.agents/scripts/lib/orchestration/dispatch-engine.js +0 -134
- package/.agents/scripts/lib/orchestration/dispatch-pipeline.js +0 -183
- package/.agents/scripts/lib/orchestration/epic-cleanup.js +0 -801
- package/.agents/scripts/lib/orchestration/epic-deliver-lease-guard.js +0 -310
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/context.js +0 -163
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/creation.js +0 -140
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/dag.js +0 -64
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/diagnostics.js +0 -72
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/persist-helpers.js +0 -156
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/persist.js +0 -345
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/planning-artifacts.js +0 -41
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/reconcile-spawn.js +0 -86
- package/.agents/scripts/lib/orchestration/epic-plan-lease-guard.js +0 -391
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/drain.js +0 -94
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/plan-epic.js +0 -236
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/run-spec-phase.js +0 -307
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/spec-freshness.js +0 -117
- package/.agents/scripts/lib/orchestration/epic-plan-state-store.js +0 -117
- package/.agents/scripts/lib/orchestration/epic-run-state-store.js +0 -388
- package/.agents/scripts/lib/orchestration/epic-runner/concurrency-gate.js +0 -186
- package/.agents/scripts/lib/orchestration/epic-runner/deliver-phases.js +0 -50
- package/.agents/scripts/lib/orchestration/epic-runner/phases/build-wave-dag.js +0 -129
- package/.agents/scripts/lib/orchestration/epic-runner/phases/snapshot.js +0 -103
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/composition.js +0 -267
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/signals.js +0 -210
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/transport.js +0 -238
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/_bullet-format.js +0 -32
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/component-drift.js +0 -203
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/crap-drift.js +0 -227
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/maintainability-drift.js +0 -117
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/stalled-worktree.js +0 -37
- package/.agents/scripts/lib/orchestration/epic-runner/story-launcher.js +0 -127
- package/.agents/scripts/lib/orchestration/epic-runner/sub-agent-return.js +0 -276
- package/.agents/scripts/lib/orchestration/epic-runner/wave-scheduler.js +0 -66
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-apply.js +0 -789
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-diff.js +0 -676
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-discriminator.js +0 -389
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-format.js +0 -230
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-ops.js +0 -361
- package/.agents/scripts/lib/orchestration/finalize/open-or-locate-pr.js +0 -306
- package/.agents/scripts/lib/orchestration/finalize/post-handoff-comment.js +0 -489
- package/.agents/scripts/lib/orchestration/finalize/sanitize-skip-ci.js +0 -88
- package/.agents/scripts/lib/orchestration/lifecycle/emit-story-dispatch-end.js +0 -147
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/acceptance-reconciler.js +0 -384
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-armer.js +0 -501
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-predicate.js +0 -984
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/branch-cleaner.js +0 -264
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/checkpoint-pointer-writer.js +0 -278
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/cleaner.js +0 -355
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/finalizer.js +0 -673
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/index.js +0 -378
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/intervention-recorder.js +0 -140
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/label-transitioner.js +0 -144
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/notify-dispatcher.js +0 -174
- package/.agents/scripts/lib/orchestration/manifest-builder.js +0 -222
- package/.agents/scripts/lib/orchestration/plan-persist/amend.js +0 -359
- package/.agents/scripts/lib/orchestration/plan-persist/delivery-mode.js +0 -127
- package/.agents/scripts/lib/orchestration/post-merge-pipeline.js +0 -205
- package/.agents/scripts/lib/orchestration/recurring-failure-detector.js +0 -152
- package/.agents/scripts/lib/orchestration/retro/phases/checks.js +0 -94
- package/.agents/scripts/lib/orchestration/retro/phases/compose-body.js +0 -571
- package/.agents/scripts/lib/orchestration/retro/phases/gather-signals.js +0 -450
- package/.agents/scripts/lib/orchestration/retro/phases/post-and-mirror.js +0 -191
- package/.agents/scripts/lib/orchestration/retro-heuristics.js +0 -57
- package/.agents/scripts/lib/orchestration/retro-runner.js +0 -197
- package/.agents/scripts/lib/orchestration/skill-capsule-loader.js +0 -109
- package/.agents/scripts/lib/orchestration/spec-renderer.js +0 -447
- package/.agents/scripts/lib/orchestration/story-close/auto-refresh-runner.js +0 -747
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/gate-failure.js +0 -211
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/pre-merge-attribution.js +0 -158
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/refresh-commit.js +0 -446
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/regression-projection.js +0 -297
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/scope-discovery.js +0 -48
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution-wiring.js +0 -67
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution.js +0 -161
- package/.agents/scripts/lib/orchestration/story-close/baseline-friction-body.js +0 -117
- package/.agents/scripts/lib/orchestration/story-close/cd-out-guard.js +0 -86
- package/.agents/scripts/lib/orchestration/story-close/cleanup-reconciler.js +0 -147
- package/.agents/scripts/lib/orchestration/story-close/close-inputs.js +0 -142
- package/.agents/scripts/lib/orchestration/story-close/comment-bodies.js +0 -62
- package/.agents/scripts/lib/orchestration/story-close/merge-runner.js +0 -658
- package/.agents/scripts/lib/orchestration/story-close/merge-subject.js +0 -198
- package/.agents/scripts/lib/orchestration/story-close/phases/branch-restore.js +0 -105
- package/.agents/scripts/lib/orchestration/story-close/phases/close.js +0 -222
- package/.agents/scripts/lib/orchestration/story-close/phases/gates.js +0 -292
- package/.agents/scripts/lib/orchestration/story-close/phases/locked-pipeline.js +0 -270
- package/.agents/scripts/lib/orchestration/story-close/phases/preflight.js +0 -110
- package/.agents/scripts/lib/orchestration/story-close/phases/refresh.js +0 -86
- package/.agents/scripts/lib/orchestration/story-close/phases/timeout-blocked-emitter.js +0 -112
- package/.agents/scripts/lib/orchestration/story-close/phases/timeout-blocked.js +0 -157
- package/.agents/scripts/lib/orchestration/story-close/post-merge-close.js +0 -421
- package/.agents/scripts/lib/orchestration/story-close/pre-merge-validation.js +0 -301
- package/.agents/scripts/lib/orchestration/story-close/shared-checkout-guard.js +0 -163
- package/.agents/scripts/lib/orchestration/story-close-recovery.js +0 -690
- package/.agents/scripts/lib/orchestration/wave-marker.js +0 -28
- package/.agents/scripts/lib/orchestration/wave-record-io.js +0 -218
- package/.agents/scripts/lib/orchestration/wave-record-notifications.js +0 -145
- package/.agents/scripts/lib/orchestration/wave-record-projection.js +0 -212
- package/.agents/scripts/lib/presentation/dispatch-manifest-render.js +0 -111
- package/.agents/scripts/lib/presentation/manifest-builder.js +0 -239
- package/.agents/scripts/lib/presentation/manifest-formatter.js +0 -242
- package/.agents/scripts/lib/presentation/manifest-helpers.js +0 -213
- package/.agents/scripts/lib/presentation/manifest-persistence.js +0 -261
- package/.agents/scripts/lib/presentation/manifest-procedures.js +0 -55
- package/.agents/scripts/lib/presentation/manifest-render-waves.js +0 -306
- package/.agents/scripts/lib/presentation/manifest-renderer.js +0 -188
- package/.agents/scripts/lib/presentation/manifest-story-views.js +0 -110
- package/.agents/scripts/lib/push-epic-retry.js +0 -209
- package/.agents/scripts/lib/spec/index.js +0 -36
- package/.agents/scripts/lib/spec/loader.js +0 -425
- package/.agents/scripts/lib/spec/state.js +0 -208
- package/.agents/scripts/lib/story-init/blocker-validator.js +0 -68
- package/.agents/scripts/lib/story-init/branch-initializer.js +0 -408
- package/.agents/scripts/lib/story-init/context-resolver.js +0 -92
- package/.agents/scripts/lib/story-init/donor-precheck.js +0 -207
- package/.agents/scripts/lib/story-init/state-transitioner.js +0 -80
- package/.agents/scripts/lib/story-init/task-graph-builder.js +0 -124
- package/.agents/scripts/lib/story-init/transition-summary.js +0 -34
- package/.agents/scripts/lib/test-reserved-epic-temp-ids.js +0 -35
- package/.agents/scripts/lib/wave-runner/tick.js +0 -754
- package/.agents/scripts/lib/wave-runner/wave-runner-error.js +0 -20
- package/.agents/scripts/lifecycle-emit-story-dispatch.js +0 -194
- package/.agents/scripts/lifecycle-emit.js +0 -510
- package/.agents/scripts/plan-critics.js +0 -199
- package/.agents/scripts/retro-run.js +0 -218
- package/.agents/scripts/standalone-feedback-rollup.js +0 -188
- package/.agents/scripts/story-close.js +0 -294
- package/.agents/scripts/story-init.js +0 -599
- package/.agents/scripts/story-phase.js +0 -369
- package/.agents/scripts/wave-tick.js +0 -335
- package/.agents/skills/core/baseline-refresh/SKILL.md +0 -181
- package/.agents/skills/core/ci-cd-and-automation/SKILL.md +0 -274
- package/.agents/skills/core/ci-cd-and-automation/examples.md +0 -211
- package/.agents/skills/core/code-simplification/SKILL.md +0 -389
- package/.agents/skills/core/context-engineering/SKILL.md +0 -309
- package/.agents/skills/core/context-engineering/examples.md +0 -58
- package/.agents/skills/core/deprecation-and-migration/SKILL.md +0 -250
- package/.agents/skills/core/epic-plan-consolidate/SKILL.md +0 -172
- package/.agents/skills/core/epic-plan-consolidate/examples.md +0 -51
- package/.agents/skills/core/epic-plan-decompose-author/SKILL.md +0 -441
- package/.agents/skills/core/epic-plan-decompose-author/examples.md +0 -47
- package/.agents/skills/core/epic-plan-premortem/SKILL.md +0 -146
- package/.agents/skills/core/epic-plan-premortem/examples.md +0 -53
- package/.agents/skills/core/epic-plan-spec-author/SKILL.md +0 -413
- package/.agents/skills/core/epic-plan-spec-author/examples.md +0 -91
- package/.agents/skills/core/frontend-ui-engineering/SKILL.md +0 -357
- package/.agents/skills/core/hydrate-context/SKILL.md +0 -123
- package/.agents/skills/core/idea-refinement/examples.md +0 -437
- package/.agents/skills/core/idea-refinement/frameworks.md +0 -135
- package/.agents/skills/core/incremental-implementation/SKILL.md +0 -271
- package/.agents/skills/core/introducing-a-baseline-gate/SKILL.md +0 -213
- package/.agents/skills/core/knowledge-transfer/SKILL.md +0 -180
- package/.agents/skills/core/mutation-survivor-remediation/SKILL.md +0 -117
- package/.agents/skills/core/performance-optimization/SKILL.md +0 -314
- package/.agents/skills/core/planning-and-task-breakdown/SKILL.md +0 -277
- package/.agents/skills/core/property-based-testing/SKILL.md +0 -148
- package/.agents/skills/core/refactoring-discipline/SKILL.md +0 -111
- package/.agents/skills/core/shipping-and-launch/SKILL.md +0 -328
- package/.agents/skills/core/spec-driven-development/SKILL.md +0 -252
- package/.agents/skills/core/test-driven-development/SKILL.md +0 -475
- package/.agents/skills/core/using-agent-skills/SKILL.md +0 -232
- package/.agents/skills/stack/architecture/monorepo-path-strategist/SKILL.md +0 -31
- package/.agents/skills/stack/architecture/structured-output-zod/SKILL.md +0 -51
- package/.agents/skills/stack/architecture/subagent-orchestration/SKILL.md +0 -76
- package/.agents/skills/stack/backend/cloudflare-hono-architect/SKILL.md +0 -31
- package/.agents/skills/stack/backend/cloudflare-hono-architect/examples/route-template.ts +0 -33
- package/.agents/skills/stack/backend/cloudflare-queue-manager/SKILL.md +0 -31
- package/.agents/skills/stack/backend/cloudflare-workers/SKILL.md +0 -51
- package/.agents/skills/stack/backend/highlevel-crm/SKILL.md +0 -54
- package/.agents/skills/stack/backend/sqlite-drizzle-expert/SKILL.md +0 -29
- package/.agents/skills/stack/backend/sqlite-drizzle-expert/examples/schema-template.ts +0 -30
- package/.agents/skills/stack/backend/stripe-integration/SKILL.md +0 -57
- package/.agents/skills/stack/backend/stripe-integration/scripts/listen-stripe.sh +0 -9
- package/.agents/skills/stack/backend/turso-sqlite/SKILL.md +0 -48
- package/.agents/skills/stack/frontend/astro/SKILL.md +0 -62
- package/.agents/skills/stack/frontend/astro-react-island-strategist/SKILL.md +0 -30
- package/.agents/skills/stack/frontend/expo-react-native-developer/SKILL.md +0 -29
- package/.agents/skills/stack/frontend/google-analytics-v4/SKILL.md +0 -50
- package/.agents/skills/stack/frontend/tailwind-v4/SKILL.md +0 -58
- package/.agents/skills/stack/frontend/ui-accessibility-engineer/SKILL.md +0 -34
- package/.agents/skills/stack/qa/audit-accessibility/SKILL.md +0 -51
- package/.agents/skills/stack/qa/lighthouse-baseline/SKILL.md +0 -199
- package/.agents/skills/stack/security/backend-security-patterns/SKILL.md +0 -68
- package/.agents/workflows/helpers/deliver-epic-reference.md +0 -534
- package/.agents/workflows/helpers/deliver-epic.md +0 -955
- package/.agents/workflows/helpers/deliver-stories.md +0 -440
- package/.agents/workflows/helpers/epic-audit.md +0 -189
- package/.agents/workflows/helpers/epic-deliver-story.md +0 -427
- package/.agents/workflows/helpers/epic-testing.md +0 -125
- package/.agents/workflows/helpers/plan-epic-reference.md +0 -160
- package/.agents/workflows/helpers/plan-epic.md +0 -351
- package/.agents/workflows/helpers/plan-story.md +0 -251
- package/.agents/workflows/helpers/scope-triage-gate.md +0 -108
- /package/.agents/scripts/lib/orchestration/{epic-plan-spec/phases → planning}/spec-authoring-grounding.js +0 -0
|
@@ -1,232 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: using-agent-skills
|
|
3
|
-
description:
|
|
4
|
-
Discovers and invokes agent skills. Use when starting a session or when you
|
|
5
|
-
need to discover which skill applies to the current task. This is the
|
|
6
|
-
meta-skill that governs how all other skills are discovered and invoked.
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Using Agent Skills
|
|
10
|
-
|
|
11
|
-
## Policy Capsule
|
|
12
|
-
|
|
13
|
-
- Check for an applicable skill **before** starting work; skills are workflows, not suggestions — follow steps in order and never skip the verification step.
|
|
14
|
-
- Surface assumptions explicitly before any non-trivial implementation (`ASSUMPTIONS I'M MAKING:` block) and invite correction.
|
|
15
|
-
- Manage confusion actively: STOP, name the inconsistency, present the trade-off, wait for resolution. Never silently pick an interpretation.
|
|
16
|
-
- **Sub-agent exception**: when running under `helpers/epic-deliver-story`, `helpers/single-story-deliver`, or another non-interactive parent, never stall for input. Pick the narrowest reasonable interpretation that satisfies the parent Story's AC; if truly stuck, transition to `agent::blocked`, post a `friction` structured comment with the default assumption, and exit non-zero.
|
|
17
|
-
- Push back on flawed approaches with concrete, quantified downsides and an alternative; sycophancy is a failure mode.
|
|
18
|
-
- Enforce Simplicity: prefer the boring, obvious solution. Resist abstraction unless it earns its complexity; 1000 lines where 100 suffice is a failure.
|
|
19
|
-
- Maintain Scope Discipline: no drive-by cleanups, no refactoring adjacent systems, no deletions you don't fully understand, no unsolicited features.
|
|
20
|
-
- Verify, don't assume — tasks complete only when evidence (passing tests, build output, runtime data) is in hand.
|
|
21
|
-
- When in doubt and the task is non-trivial without a spec, start with `spec-driven-development`. Multiple skills compose; follow the canonical lifecycle order when delivering a complete feature.
|
|
22
|
-
|
|
23
|
-
## Overview
|
|
24
|
-
|
|
25
|
-
Agent Skills is a collection of engineering workflow skills organized by
|
|
26
|
-
development phase. Each skill encodes a specific process that senior engineers
|
|
27
|
-
follow. This meta-skill helps you discover and apply the right skill for your
|
|
28
|
-
current task.
|
|
29
|
-
|
|
30
|
-
## Skill Discovery
|
|
31
|
-
|
|
32
|
-
When a task arrives, identify the development phase and apply the corresponding
|
|
33
|
-
skill:
|
|
34
|
-
|
|
35
|
-
```text
|
|
36
|
-
Task arrives
|
|
37
|
-
│
|
|
38
|
-
├── Vague idea/need refinement? ──→ idea-refinement
|
|
39
|
-
├── New project/feature/change? ──→ spec-driven-development
|
|
40
|
-
├── Have a spec, need tasks? ──────→ planning-and-task-breakdown
|
|
41
|
-
├── Implementing code? ────────────→ incremental-implementation
|
|
42
|
-
│ ├── UI work? ─────────────────→ frontend-ui-engineering
|
|
43
|
-
│ ├── API work? ────────────────→ api-and-interface-design
|
|
44
|
-
│ └── Need better context? ─────→ context-engineering
|
|
45
|
-
├── Writing/running tests? ────────→ test-driven-development
|
|
46
|
-
│ └── Browser-based? ───────────→ browser-testing-with-devtools
|
|
47
|
-
├── Something broke? ──────────────→ debugging-and-error-recovery
|
|
48
|
-
├── Reviewing code? ───────────────→ code-review-and-quality
|
|
49
|
-
│ ├── Security concerns? ───────→ security-and-hardening
|
|
50
|
-
│ └── Performance concerns? ────→ performance-optimization
|
|
51
|
-
├── Committing/branching? ─────────→ git-workflow-and-versioning
|
|
52
|
-
├── CI/CD pipeline work? ──────────→ ci-cd-and-automation
|
|
53
|
-
├── Writing docs/ADRs? ───────────→ documentation-and-adrs
|
|
54
|
-
└── Deploying/launching? ─────────→ shipping-and-launch
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
## Core Operating Behaviors
|
|
58
|
-
|
|
59
|
-
These behaviors apply at all times, across all skills. They are non-negotiable.
|
|
60
|
-
|
|
61
|
-
### 1. Surface Assumptions
|
|
62
|
-
|
|
63
|
-
Before implementing anything non-trivial, explicitly state your assumptions:
|
|
64
|
-
|
|
65
|
-
```text
|
|
66
|
-
ASSUMPTIONS I'M MAKING:
|
|
67
|
-
1. [assumption about requirements]
|
|
68
|
-
2. [assumption about architecture]
|
|
69
|
-
3. [assumption about scope]
|
|
70
|
-
→ Correct me now or I'll proceed with these.
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
Don't silently fill in ambiguous requirements. The most common failure mode is
|
|
74
|
-
making wrong assumptions and running with them unchecked. Surface uncertainty
|
|
75
|
-
early — it's cheaper than rework.
|
|
76
|
-
|
|
77
|
-
### 2. Manage Confusion Actively
|
|
78
|
-
|
|
79
|
-
When you encounter inconsistencies, conflicting requirements, or unclear
|
|
80
|
-
specifications:
|
|
81
|
-
|
|
82
|
-
1. **STOP.** Do not proceed with a guess.
|
|
83
|
-
2. Name the specific confusion.
|
|
84
|
-
3. Present the tradeoff or ask the clarifying question.
|
|
85
|
-
4. Wait for resolution before continuing.
|
|
86
|
-
|
|
87
|
-
**Bad:** Silently picking one interpretation and hoping it's right. **Good:** "I
|
|
88
|
-
see X in the spec but Y in the existing code. Which takes precedence?"
|
|
89
|
-
|
|
90
|
-
#### Sub-agent exception
|
|
91
|
-
|
|
92
|
-
The "STOP and ask the operator" guidance above applies when a human is in
|
|
93
|
-
the loop. When you are running as a **sub-agent** of another skill — most
|
|
94
|
-
commonly a Story executor spawned by `helpers/epic-deliver-story` or
|
|
95
|
-
`helpers/single-story-deliver` — there is **no input channel** to ask.
|
|
96
|
-
In that context:
|
|
97
|
-
|
|
98
|
-
1. Pick the **narrowest reasonable interpretation** that satisfies the
|
|
99
|
-
Story's acceptance criteria. Out-of-scope cleanups belong in a
|
|
100
|
-
follow-on ticket, not a widened Story.
|
|
101
|
-
2. If you genuinely cannot proceed, transition to `agent::blocked`, post a
|
|
102
|
-
`friction` structured comment naming the decision required and the
|
|
103
|
-
default assumption you would have made, and exit non-zero. The parent
|
|
104
|
-
`/deliver` aggregator will surface the block.
|
|
105
|
-
3. **Never** stall waiting for input that will never arrive.
|
|
106
|
-
|
|
107
|
-
This is the only documented exception to the "Manage Confusion Actively"
|
|
108
|
-
rule. Read it together with the Story-implementation contracts in
|
|
109
|
-
[`helpers/epic-deliver-story`](../../../workflows/helpers/epic-deliver-story.md)
|
|
110
|
-
and [`helpers/single-story-deliver`](../../../workflows/helpers/single-story-deliver.md),
|
|
111
|
-
which state the same constraint from the executor side.
|
|
112
|
-
|
|
113
|
-
### 3. Push Back When Warranted
|
|
114
|
-
|
|
115
|
-
You are not a yes-machine. When an approach has clear problems:
|
|
116
|
-
|
|
117
|
-
- Point out the issue directly
|
|
118
|
-
- Explain the concrete downside (quantify when possible — "this adds ~200ms
|
|
119
|
-
latency" not "this might be slower")
|
|
120
|
-
- Propose an alternative
|
|
121
|
-
- Accept the human's decision if they override with full information
|
|
122
|
-
|
|
123
|
-
Sycophancy is a failure mode. "Of course!" followed by implementing a bad idea
|
|
124
|
-
helps no one. Honest technical disagreement is more valuable than false
|
|
125
|
-
agreement.
|
|
126
|
-
|
|
127
|
-
### 4. Enforce Simplicity
|
|
128
|
-
|
|
129
|
-
Your natural tendency is to overcomplicate. Actively resist it.
|
|
130
|
-
|
|
131
|
-
Before finishing any implementation, ask:
|
|
132
|
-
|
|
133
|
-
- Can this be done in fewer lines?
|
|
134
|
-
- Are these abstractions earning their complexity?
|
|
135
|
-
- Would a staff engineer look at this and say "why didn't you just..."?
|
|
136
|
-
|
|
137
|
-
If you build 1000 lines and 100 would suffice, you have failed. Prefer the
|
|
138
|
-
boring, obvious solution. Cleverness is expensive.
|
|
139
|
-
|
|
140
|
-
### 5. Maintain Scope Discipline
|
|
141
|
-
|
|
142
|
-
Touch only what you're asked to touch.
|
|
143
|
-
|
|
144
|
-
Do NOT:
|
|
145
|
-
|
|
146
|
-
- Remove comments you don't understand
|
|
147
|
-
- "Clean up" code orthogonal to the task
|
|
148
|
-
- Refactor adjacent systems as a side effect
|
|
149
|
-
- Delete code that seems unused without explicit approval
|
|
150
|
-
- Add features not in the spec because they "seem useful"
|
|
151
|
-
|
|
152
|
-
Your job is surgical precision, not unsolicited renovation.
|
|
153
|
-
|
|
154
|
-
### 6. Verify, Don't Assume
|
|
155
|
-
|
|
156
|
-
Every skill includes a verification step. A task is not complete until
|
|
157
|
-
verification passes. "Seems right" is never sufficient — there must be evidence
|
|
158
|
-
(passing tests, build output, runtime data).
|
|
159
|
-
|
|
160
|
-
## Failure Modes to Avoid
|
|
161
|
-
|
|
162
|
-
These are the subtle errors that look like productivity but create problems:
|
|
163
|
-
|
|
164
|
-
1. Making wrong assumptions without checking
|
|
165
|
-
2. Not managing your own confusion — plowing ahead when lost
|
|
166
|
-
3. Not surfacing inconsistencies you notice
|
|
167
|
-
4. Not presenting tradeoffs on non-obvious decisions
|
|
168
|
-
5. Being sycophantic ("Of course!") to approaches with clear problems
|
|
169
|
-
6. Overcomplicating code and APIs
|
|
170
|
-
7. Modifying code or comments orthogonal to the task
|
|
171
|
-
8. Removing things you don't fully understand
|
|
172
|
-
9. Building without a spec because "it's obvious"
|
|
173
|
-
10. Skipping verification because "it looks right"
|
|
174
|
-
|
|
175
|
-
## Skill Rules
|
|
176
|
-
|
|
177
|
-
1. **Check for an applicable skill before starting work.** Skills encode
|
|
178
|
-
processes that prevent common mistakes.
|
|
179
|
-
|
|
180
|
-
2. **Skills are workflows, not suggestions.** Follow the steps in order. Don't
|
|
181
|
-
skip verification steps.
|
|
182
|
-
|
|
183
|
-
3. **Multiple skills can apply.** A feature implementation might involve
|
|
184
|
-
`idea-refinement` → `spec-driven-development` → `planning-and-task-breakdown`
|
|
185
|
-
→ `incremental-implementation` → `test-driven-development` →
|
|
186
|
-
`code-review-and-quality` → `shipping-and-launch` in sequence.
|
|
187
|
-
|
|
188
|
-
4. **When in doubt, start with a spec.** If the task is non-trivial and there's
|
|
189
|
-
no spec, begin with `spec-driven-development`.
|
|
190
|
-
|
|
191
|
-
## Lifecycle Sequence
|
|
192
|
-
|
|
193
|
-
For a complete feature, the typical skill sequence is:
|
|
194
|
-
|
|
195
|
-
```text
|
|
196
|
-
1. idea-refinement → Refine vague ideas
|
|
197
|
-
2. spec-driven-development → Define what we're building
|
|
198
|
-
3. planning-and-task-breakdown → Break into verifiable chunks
|
|
199
|
-
4. context-engineering → Load the right context
|
|
200
|
-
5. incremental-implementation → Build slice by slice
|
|
201
|
-
6. test-driven-development → Prove each slice works
|
|
202
|
-
7. code-review-and-quality → Review before merge
|
|
203
|
-
8. git-workflow-and-versioning → Clean commit history
|
|
204
|
-
9. documentation-and-adrs → Document decisions
|
|
205
|
-
10. shipping-and-launch → Deploy safely
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
Not every task needs every skill. A bug fix might only need:
|
|
209
|
-
`debugging-and-error-recovery` → `test-driven-development` →
|
|
210
|
-
`code-review-and-quality`.
|
|
211
|
-
|
|
212
|
-
## Quick Reference
|
|
213
|
-
|
|
214
|
-
| Phase | Skill | One-Line Summary |
|
|
215
|
-
| ------ | ----------------------------- | ----------------------------------------------------------------- |
|
|
216
|
-
| Define | idea-refinement | Refine ideas through structured divergent and convergent thinking |
|
|
217
|
-
| Define | spec-driven-development | Requirements and acceptance criteria before code |
|
|
218
|
-
| Plan | planning-and-task-breakdown | Decompose into small, verifiable tasks |
|
|
219
|
-
| Build | incremental-implementation | Thin vertical slices, test each before expanding |
|
|
220
|
-
| Build | context-engineering | Right context at the right time |
|
|
221
|
-
| Build | frontend-ui-engineering | Production-quality UI with accessibility |
|
|
222
|
-
| Build | api-and-interface-design | Stable interfaces with clear contracts |
|
|
223
|
-
| Verify | test-driven-development | Failing test first, then make it pass |
|
|
224
|
-
| Verify | browser-testing-with-devtools | Chrome DevTools MCP for runtime verification |
|
|
225
|
-
| Verify | debugging-and-error-recovery | Reproduce → localize → fix → guard |
|
|
226
|
-
| Review | code-review-and-quality | Five-axis review with quality gates |
|
|
227
|
-
| Review | security-and-hardening | OWASP prevention, input validation, least privilege |
|
|
228
|
-
| Review | performance-optimization | Measure first, optimize only what matters |
|
|
229
|
-
| Ship | git-workflow-and-versioning | Atomic commits, clean history |
|
|
230
|
-
| Ship | ci-cd-and-automation | Automated quality gates on every change |
|
|
231
|
-
| Ship | documentation-and-adrs | Document the why, not just the what |
|
|
232
|
-
| Ship | shipping-and-launch | Pre-launch checklist, monitoring, rollback plan |
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: monorepo-path-strategist
|
|
3
|
-
description:
|
|
4
|
-
Enforces strict workspace package routing and dependency boundaries. Use when
|
|
5
|
-
working in a monorepo with workspace aliases (e.g. `@repo/shared/*`,
|
|
6
|
-
`@repo/ui/*`) and you need to prevent deep relative imports, cross-workspace
|
|
7
|
-
contamination, or dependencies added at the wrong package.json level.
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Monorepo Path Strategist
|
|
11
|
-
|
|
12
|
-
## Policy Capsule
|
|
13
|
-
|
|
14
|
-
- Never use deeply nested relative imports to access shared logic across workspaces.
|
|
15
|
-
- Use the established workspace aliases (e.g. `@repo/shared/db`, `@repo/ui/components`) for every cross-package reference.
|
|
16
|
-
- Add new dependencies to the specific workspace's `package.json`, not the monorepo root.
|
|
17
|
-
- Never cross-contaminate UI surfaces: `@repo/web` and `@repo/mobile` must not import from each other.
|
|
18
|
-
- Treat workspace aliases as the canonical contract — refactor any deep relative import you encounter into the alias form.
|
|
19
|
-
|
|
20
|
-
**Description:** Enforces strict workspace package routing and dependency
|
|
21
|
-
boundaries.
|
|
22
|
-
|
|
23
|
-
**Instruction:** You are operating within a strict monorepo environment.
|
|
24
|
-
|
|
25
|
-
- NEVER use deeply nested relative imports to access shared logic.
|
|
26
|
-
- You MUST use the established workspace aliases (e.g., `@repo/shared/db`,
|
|
27
|
-
`@repo/ui/components`).
|
|
28
|
-
- Ensure any new dependencies are added to the correct workspace `package.json`,
|
|
29
|
-
not the root.
|
|
30
|
-
- Do not cross-contaminate UI code: `@repo/web` and `@repo/mobile` must never
|
|
31
|
-
import from each other.
|
|
@@ -1,51 +0,0 @@
|
|
|
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.
|
|
@@ -1,76 +0,0 @@
|
|
|
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 orchestrator's context window clean.
|
|
8
|
-
Applies recursively — an orchestrator at any supported nesting depth applies
|
|
9
|
-
the same policy to its own children.
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# Skill: Subagent Orchestration
|
|
13
|
-
|
|
14
|
-
## Recursive orchestration model
|
|
15
|
-
|
|
16
|
-
This skill describes **recursive orchestration**, not a fixed two-tier
|
|
17
|
-
"main agent vs. subagents" split. An **orchestrator** is any agent that
|
|
18
|
-
dispatches sub-agents; a sub-agent is itself an orchestrator over its own
|
|
19
|
-
children. The Claude Code harness carries the `Agent` tool into sub-agents
|
|
20
|
-
(verified nesting depth 2, announced max depth 5; see
|
|
21
|
-
[#2870](https://github.com/dsj1984/mandrel/issues/2870)), so the same
|
|
22
|
-
one-objective / verify / parallelize policy applies **at every level** —
|
|
23
|
-
substitute "orchestrator" for "main agent" and "child" for "subagent"
|
|
24
|
-
throughout and the rules hold unchanged. Keeping a given dispatch level
|
|
25
|
-
flat remains a legitimate **design choice** (e.g. the `/deliver` wave
|
|
26
|
-
loop), but it is no longer forced by a harness limitation.
|
|
27
|
-
|
|
28
|
-
The cost caution compounds with depth: every nesting level re-pays the
|
|
29
|
-
full always-loaded context, so an orchestrator MUST weigh the depth it
|
|
30
|
-
opens against its budget (see
|
|
31
|
-
[`instructions.md` § 4](../../../../instructions.md)) and stay within the
|
|
32
|
-
supported depth envelope.
|
|
33
|
-
|
|
34
|
-
## Policy Capsule
|
|
35
|
-
|
|
36
|
-
- Dispatch one objective per subagent; never bundle unrelated goals into a single delegation.
|
|
37
|
-
- Hand each subagent only the minimum context (files, docs, goal) required — no broad context dumps.
|
|
38
|
-
- Specify the expected return format explicitly (JSON summary, diff, bullet list) in every handoff.
|
|
39
|
-
- Verify the subagent's output before incorporating it; treat returned artifacts as untrusted until checked.
|
|
40
|
-
- Run non-dependent subagents in parallel; serialize only when one subagent's output is required input for another.
|
|
41
|
-
- Require a concise summary back from each subagent to keep the orchestrator's context window clean.
|
|
42
|
-
- Investigate subagent failures rather than retrying blindly with the same prompt.
|
|
43
|
-
- Respect the nesting depth budget; each level opened re-pays the always-loaded context, so orchestrate deeper only when the isolation or parallelism gain justifies the cost.
|
|
44
|
-
|
|
45
|
-
Internal protocol for managing complex tasks through the creation and
|
|
46
|
-
coordination of subagents, applied recursively by the orchestrator at any
|
|
47
|
-
supported depth.
|
|
48
|
-
|
|
49
|
-
## 1. Core Principles
|
|
50
|
-
|
|
51
|
-
- **Task Isolation:** One objective per subagent. Do not overload a subagent
|
|
52
|
-
with multiple unrelated tasks.
|
|
53
|
-
- **Minimal Context:** Provide only the necessary context (files, docs, specific
|
|
54
|
-
goal) to keep the subagent focused and token-efficient.
|
|
55
|
-
- **Verification:** The orchestrator must always verify each child's output
|
|
56
|
-
before incorporating it into its own result — at every level of the tree.
|
|
57
|
-
- **Depth Awareness:** Orchestration is recursive; before opening a deeper
|
|
58
|
-
level, confirm the work justifies re-paying the always-loaded context and
|
|
59
|
-
that the nesting stays within the supported depth envelope.
|
|
60
|
-
|
|
61
|
-
## 2. Operation Standards
|
|
62
|
-
|
|
63
|
-
- **Handoffs:** When delegating, clearly state the expected return format (e.g.,
|
|
64
|
-
"Return a JSON summary", "Provide a diff for file X").
|
|
65
|
-
- **Error Handling:** If a subagent fails or returns an ambiguous result,
|
|
66
|
-
investigate the failure rather than retrying blindly.
|
|
67
|
-
- **Parallelism:** Use subagents to perform non-dependent tasks concurrently
|
|
68
|
-
(e.g., auditing three different modules simultaneously). A child that is
|
|
69
|
-
itself an orchestrator may parallelize its own sub-units the same way.
|
|
70
|
-
|
|
71
|
-
## 3. Best Practices
|
|
72
|
-
|
|
73
|
-
- **State Sync:** Ensure the orchestrator's mental model remains the source of
|
|
74
|
-
truth if multiple subagents modify the codebase.
|
|
75
|
-
- **Summarization:** Require subagents to provide a concise summary of their
|
|
76
|
-
findings to prevent the orchestrator's context window from being flooded.
|
|
@@ -1,31 +0,0 @@
|
|
|
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`).
|
|
@@ -1,33 +0,0 @@
|
|
|
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;
|
|
@@ -1,31 +0,0 @@
|
|
|
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.
|
|
@@ -1,51 +0,0 @@
|
|
|
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.
|
|
@@ -1,54 +0,0 @@
|
|
|
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.
|
|
@@ -1,29 +0,0 @@
|
|
|
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.
|
|
@@ -1,30 +0,0 @@
|
|
|
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
|
-
}));
|