@soleur/opencode 0.0.0-stage → 1.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/.claude-plugin/agents.manifest.json +476 -0
- package/.claude-plugin/plugin.json +42 -0
- package/README.md +44 -2
- package/agents/community/.gitkeep +0 -0
- package/agents/engineering/cto.md +87 -0
- package/agents/engineering/design/ddd-architect.md +95 -0
- package/agents/engineering/discovery/agent-finder.md +214 -0
- package/agents/engineering/discovery/functional-discovery.md +182 -0
- package/agents/engineering/infra/infra-security.md +151 -0
- package/agents/engineering/infra/platform-strategist.md +109 -0
- package/agents/engineering/infra/terraform-architect.md +171 -0
- package/agents/engineering/prompt-engineer.md +37 -0
- package/agents/engineering/research/best-practices-researcher.md +115 -0
- package/agents/engineering/research/framework-docs-researcher.md +93 -0
- package/agents/engineering/research/git-history-analyzer.md +53 -0
- package/agents/engineering/research/learnings-researcher.md +285 -0
- package/agents/engineering/research/repo-research-analyst.md +118 -0
- package/agents/engineering/review/agent-native-reviewer.md +279 -0
- package/agents/engineering/review/architecture-strategist.md +61 -0
- package/agents/engineering/review/code-quality-analyst.md +92 -0
- package/agents/engineering/review/code-simplicity-reviewer.md +109 -0
- package/agents/engineering/review/data-integrity-guardian.md +82 -0
- package/agents/engineering/review/data-migration-expert.md +98 -0
- package/agents/engineering/review/deployment-verification-agent.md +183 -0
- package/agents/engineering/review/dhh-rails-reviewer.md +46 -0
- package/agents/engineering/review/kieran-rails-reviewer.md +87 -0
- package/agents/engineering/review/legacy-code-expert.md +55 -0
- package/agents/engineering/review/observability-coverage-reviewer.md +147 -0
- package/agents/engineering/review/pattern-recognition-specialist.md +59 -0
- package/agents/engineering/review/performance-oracle.md +130 -0
- package/agents/engineering/review/security-sentinel.md +167 -0
- package/agents/engineering/review/semgrep-sast.md +36 -0
- package/agents/engineering/review/test-design-reviewer.md +150 -0
- package/agents/engineering/review/user-impact-reviewer.md +70 -0
- package/agents/engineering/workflow/pr-comment-resolver.md +69 -0
- package/agents/finance/budget-analyst.md +29 -0
- package/agents/finance/cfo.md +44 -0
- package/agents/finance/financial-reporter.md +30 -0
- package/agents/finance/revenue-analyst.md +30 -0
- package/agents/legal/clo.md +115 -0
- package/agents/legal/legal-compliance-auditor.md +110 -0
- package/agents/legal/legal-document-generator.md +134 -0
- package/agents/marketing/analytics-analyst.md +25 -0
- package/agents/marketing/brand-architect.md +181 -0
- package/agents/marketing/cmo.md +76 -0
- package/agents/marketing/conversion-optimizer.md +19 -0
- package/agents/marketing/copywriter.md +20 -0
- package/agents/marketing/fact-checker.md +70 -0
- package/agents/marketing/growth-strategist.md +145 -0
- package/agents/marketing/paid-media-strategist.md +28 -0
- package/agents/marketing/pricing-strategist.md +17 -0
- package/agents/marketing/programmatic-seo-specialist.md +25 -0
- package/agents/marketing/retention-strategist.md +23 -0
- package/agents/marketing/seo-aeo-analyst.md +164 -0
- package/agents/operations/coo.md +50 -0
- package/agents/operations/ops-advisor.md +78 -0
- package/agents/operations/ops-provisioner.md +101 -0
- package/agents/operations/ops-research.md +52 -0
- package/agents/operations/service-automator.md +278 -0
- package/agents/product/business-validator.md +206 -0
- package/agents/product/competitive-intelligence.md +89 -0
- package/agents/product/cpo.md +63 -0
- package/agents/product/design/ux-design-lead.md +209 -0
- package/agents/product/spec-flow-analyzer.md +122 -0
- package/agents/sales/cro.md +44 -0
- package/agents/sales/deal-architect.md +29 -0
- package/agents/sales/outbound-strategist.md +29 -0
- package/agents/sales/pipeline-analyst.md +29 -0
- package/agents/support/cco.md +48 -0
- package/agents/support/community-manager.md +570 -0
- package/agents/support/ticket-triage.md +70 -0
- package/bin/soleur-opencode.js +29 -0
- package/commands/go.md +659 -0
- package/commands/help.md +273 -0
- package/commands/sync.md +977 -0
- package/commands/version.md +103 -0
- package/hooks/antigravity-hooks.json +84 -0
- package/hooks/antigravity-session-start.sh +15 -0
- package/hooks/bare-root-cwd-guard.sh +131 -0
- package/hooks/browser-snapshot-credential-guard.sh +200 -0
- package/hooks/codex-session-start.sh +9 -0
- package/hooks/compaction-state.sh +525 -0
- package/hooks/destructive-command-guard.sh +1387 -0
- package/hooks/devin-session-start.sh +90 -0
- package/hooks/ext-filter-detect.sh +171 -0
- package/hooks/hooks.json +133 -0
- package/hooks/lib/hook-tool-kind.sh +24 -0
- package/hooks/lib/log-rotation.sh +176 -0
- package/hooks/lib/shell-argv.pl +576 -0
- package/hooks/memory-backstop.sh +1114 -0
- package/hooks/operator-stage-approval.sh +391 -0
- package/hooks/stop-hook.sh +367 -0
- package/hooks/unkept-promise-hook.sh +383 -0
- package/hooks/version-banner.sh +127 -0
- package/hooks/welcome-hook.sh +50 -0
- package/install.js +108 -0
- package/lib/agent-registry.ts +154 -0
- package/lib/c4-canonical-cli.mjs +34 -0
- package/lib/c4-canonical.mjs +46 -0
- package/lib/c4-from-components.ts +554 -0
- package/lib/go-routing.ts +81 -0
- package/lib/grok-inspect-contract.ts +311 -0
- package/lib/harness-model-map.ts +101 -0
- package/lib/harness-parity.ts +726 -0
- package/lib/harness-tool-map.ts +180 -0
- package/lib/harness.ts +716 -0
- package/lib/heartbeat-live-reconcile.ts +1153 -0
- package/lib/heartbeat-manifest.ts +342 -0
- package/lib/kb-coverage.ts +252 -0
- package/lib/pr-merge-poll.ts +103 -0
- package/lib/workflow-fidelity.ts +388 -0
- package/opencode/INSTRUCTIONS.md +152 -0
- package/opencode/agents/engineering/cto.md +10 -0
- package/opencode/agents/engineering/design/ddd-architect.md +10 -0
- package/opencode/agents/engineering/discovery/agent-finder.md +10 -0
- package/opencode/agents/engineering/discovery/functional-discovery.md +10 -0
- package/opencode/agents/engineering/infra/infra-security.md +10 -0
- package/opencode/agents/engineering/infra/platform-strategist.md +10 -0
- package/opencode/agents/engineering/infra/terraform-architect.md +10 -0
- package/opencode/agents/engineering/prompt-engineer.md +10 -0
- package/opencode/agents/engineering/research/best-practices-researcher.md +10 -0
- package/opencode/agents/engineering/research/framework-docs-researcher.md +10 -0
- package/opencode/agents/engineering/research/git-history-analyzer.md +10 -0
- package/opencode/agents/engineering/research/learnings-researcher.md +10 -0
- package/opencode/agents/engineering/research/repo-research-analyst.md +10 -0
- package/opencode/agents/engineering/review/agent-native-reviewer.md +10 -0
- package/opencode/agents/engineering/review/architecture-strategist.md +10 -0
- package/opencode/agents/engineering/review/code-quality-analyst.md +10 -0
- package/opencode/agents/engineering/review/code-simplicity-reviewer.md +10 -0
- package/opencode/agents/engineering/review/data-integrity-guardian.md +10 -0
- package/opencode/agents/engineering/review/data-migration-expert.md +10 -0
- package/opencode/agents/engineering/review/deployment-verification-agent.md +10 -0
- package/opencode/agents/engineering/review/dhh-rails-reviewer.md +10 -0
- package/opencode/agents/engineering/review/kieran-rails-reviewer.md +10 -0
- package/opencode/agents/engineering/review/legacy-code-expert.md +10 -0
- package/opencode/agents/engineering/review/observability-coverage-reviewer.md +10 -0
- package/opencode/agents/engineering/review/pattern-recognition-specialist.md +10 -0
- package/opencode/agents/engineering/review/performance-oracle.md +10 -0
- package/opencode/agents/engineering/review/security-sentinel.md +10 -0
- package/opencode/agents/engineering/review/semgrep-sast.md +10 -0
- package/opencode/agents/engineering/review/test-design-reviewer.md +10 -0
- package/opencode/agents/engineering/review/user-impact-reviewer.md +10 -0
- package/opencode/agents/engineering/workflow/pr-comment-resolver.md +10 -0
- package/opencode/agents/finance/budget-analyst.md +10 -0
- package/opencode/agents/finance/cfo.md +10 -0
- package/opencode/agents/finance/financial-reporter.md +10 -0
- package/opencode/agents/finance/revenue-analyst.md +10 -0
- package/opencode/agents/legal/clo.md +10 -0
- package/opencode/agents/legal/legal-compliance-auditor.md +10 -0
- package/opencode/agents/legal/legal-document-generator.md +10 -0
- package/opencode/agents/marketing/analytics-analyst.md +10 -0
- package/opencode/agents/marketing/brand-architect.md +10 -0
- package/opencode/agents/marketing/cmo.md +10 -0
- package/opencode/agents/marketing/conversion-optimizer.md +10 -0
- package/opencode/agents/marketing/copywriter.md +10 -0
- package/opencode/agents/marketing/fact-checker.md +10 -0
- package/opencode/agents/marketing/growth-strategist.md +10 -0
- package/opencode/agents/marketing/paid-media-strategist.md +10 -0
- package/opencode/agents/marketing/pricing-strategist.md +10 -0
- package/opencode/agents/marketing/programmatic-seo-specialist.md +10 -0
- package/opencode/agents/marketing/retention-strategist.md +10 -0
- package/opencode/agents/marketing/seo-aeo-analyst.md +10 -0
- package/opencode/agents/operations/coo.md +10 -0
- package/opencode/agents/operations/ops-advisor.md +10 -0
- package/opencode/agents/operations/ops-provisioner.md +10 -0
- package/opencode/agents/operations/ops-research.md +10 -0
- package/opencode/agents/operations/service-automator.md +10 -0
- package/opencode/agents/product/business-validator.md +10 -0
- package/opencode/agents/product/competitive-intelligence.md +10 -0
- package/opencode/agents/product/cpo.md +10 -0
- package/opencode/agents/product/design/ux-design-lead.md +10 -0
- package/opencode/agents/product/spec-flow-analyzer.md +10 -0
- package/opencode/agents/sales/cro.md +10 -0
- package/opencode/agents/sales/deal-architect.md +10 -0
- package/opencode/agents/sales/outbound-strategist.md +10 -0
- package/opencode/agents/sales/pipeline-analyst.md +10 -0
- package/opencode/agents/support/cco.md +10 -0
- package/opencode/agents/support/community-manager.md +10 -0
- package/opencode/agents/support/ticket-triage.md +10 -0
- package/opencode/commands/go.md +10 -0
- package/opencode/commands/help.md +10 -0
- package/opencode/commands/sync.md +10 -0
- package/opencode/commands/version.md +11 -0
- package/opencode/opencode.json +8 -0
- package/opencode/plugin.ts +493 -0
- package/package.json +36 -4
- package/scripts/admin-merge-ready.sh +545 -0
- package/scripts/admin-merge-ready.test.sh +753 -0
- package/scripts/affected-tests.sh +908 -0
- package/scripts/affected-tests.test.sh +1797 -0
- package/scripts/alpha-metrics.sh +78 -0
- package/scripts/alpha-metrics.test.sh +115 -0
- package/scripts/ancestor-signal-helpers.baseline.txt +16 -0
- package/scripts/audit-flag-flip.sh +107 -0
- package/scripts/check-red-on-main.sh +316 -0
- package/scripts/ci-head-verdict.sh +363 -0
- package/scripts/cloud-detect.sh +193 -0
- package/scripts/delegation-verify.sh +657 -0
- package/scripts/delegation-verify.test.sh +1424 -0
- package/scripts/deploy-arm.sh +475 -0
- package/scripts/domain-model-drift.sh +419 -0
- package/scripts/emit-decision.sh +144 -0
- package/scripts/emit-decision.test.sh +144 -0
- package/scripts/ext-filter-divergence-corpus.txt +15 -0
- package/scripts/ext-filter-divergence.sh +189 -0
- package/scripts/generate-c4-from-components.ts +442 -0
- package/scripts/grok-fidelity-gate.sh +68 -0
- package/scripts/grok-pre-push-gate.sh +232 -0
- package/scripts/harness-discovery-smoke.ts +906 -0
- package/scripts/harness-parity-census.ts +92 -0
- package/scripts/inngest-luks-alert-armed-probe.ts +29 -0
- package/scripts/install-opencode-adapter.ts +520 -0
- package/scripts/lib/affected-tests/common.sh +365 -0
- package/scripts/lib/affected-tests/go.sh +157 -0
- package/scripts/lib/affected-tests/js.sh +188 -0
- package/scripts/lib/affected-tests/nx-turbo.sh +98 -0
- package/scripts/lib/affected-tests/python.sh +185 -0
- package/scripts/lib/context-sanitize.sh +49 -0
- package/scripts/lib/domain-model-lib.sh +180 -0
- package/scripts/lib/ext-filter-grammar.tsv +34 -0
- package/scripts/lib/operator-script.sh +1236 -0
- package/scripts/lib/proc.sh +580 -0
- package/scripts/lib/session-state.sh +748 -0
- package/scripts/lib/tmp-classify.sh +843 -0
- package/scripts/lib/wrapper-boundary.sh +47 -0
- package/scripts/lint-ratchet.py +1547 -0
- package/scripts/monitor-pr-checks.sh +441 -0
- package/scripts/pipeline-tally.sh +756 -0
- package/scripts/pipeline-tally.test.sh +740 -0
- package/scripts/plugin-version.sh +528 -0
- package/scripts/precommit-guard.sh +113 -0
- package/scripts/precommit-guard.test.sh +254 -0
- package/scripts/reconcile-live-heartbeats.ts +705 -0
- package/scripts/render-c4-model.sh +217 -0
- package/scripts/resolve-git-root.sh +55 -0
- package/scripts/resolve-regenerable-conflicts.sh +363 -0
- package/scripts/resolve-regenerable-conflicts.test.sh +780 -0
- package/scripts/ruff-requirements.txt +22 -0
- package/scripts/run-in-pid-namespace.sh +98 -0
- package/scripts/run-in-pid-namespace.test.sh +290 -0
- package/scripts/scan-ancestor-signal-helpers.py +556 -0
- package/scripts/scan-ancestor-signal-helpers.test.sh +670 -0
- package/scripts/setup-ralph-loop.sh +238 -0
- package/scripts/sync-cursor-name-map.ts +316 -0
- package/scripts/sync-grok-agent-compat.ts +188 -0
- package/scripts/sync-npm-package.ts +178 -0
- package/scripts/sync-opencode-adapter.ts +479 -0
- package/scripts/sync-pr-behind.sh +534 -0
- package/scripts/sync-pr-behind.test.sh +252 -0
- package/scripts/taste-profile-update.sh +180 -0
- package/scripts/taste-profile-update.test.sh +167 -0
- package/scripts/write-budget-marker.sh +23 -0
- package/scripts/write-kb-coverage.ts +113 -0
- package/skills/admin-ip-refresh/SKILL.md +81 -0
- package/skills/admin-ip-refresh/references/admin-ip-refresh-procedure.md +201 -0
- package/skills/agent-browser/SKILL.md +698 -0
- package/skills/agent-browser/scripts/playwright-mcp-profile-slot.sh +304 -0
- package/skills/agent-browser/scripts/playwright-mcp-redact-proxy.py +964 -0
- package/skills/agent-browser/scripts/redact-a11y-snapshot.py +443 -0
- package/skills/agent-browser/test/fixtures/capture-playwright-mcp-fixtures.py +217 -0
- package/skills/agent-browser/test/fixtures/fake-passthrough-proxy.py +24 -0
- package/skills/agent-browser/test/fixtures/fake-playwright-mcp.py +131 -0
- package/skills/agent-browser/test/fixtures/make-proxy-mutant.py +48 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/dialog-link-injection.json +10 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/empty-content.json +5 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/error-and-result.json +4 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/error-code-bool.json +6 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/error-code-string.json +6 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/error-message-tree.json +6 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/error-no-data.json +6 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/error-string.json +4 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/error-with-data.json +9 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/evaluate-escaped-object.json +10 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/invalid-utf8.json +4 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/link-result.json +10 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/list-two-results.json +6 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/meta-in-result.json +13 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/no-content.json +5 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/quoted-key.json +10 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/resource-block.json +18 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/result-and-method.json +11 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/result-string.json +3 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/run-code-escaped-one-row.json +10 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/run-code-escaped.json +10 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/structured-content.json +13 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/tools-list-no-tools.json +5 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/tree-no-credential.json +10 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/two-text-blocks.json +14 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/unparsable-line.json +3 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/value-contains-brace.json +10 -0
- package/skills/agent-browser/test/fixtures/odd-shapes/value-contains-link-substring.json +10 -0
- package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/close.json +12 -0
- package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/evaluate.json +12 -0
- package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/find.json +12 -0
- package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/framing.json +6 -0
- package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/initialize.json +14 -0
- package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/navigate-link.json +12 -0
- package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/navigate.json +12 -0
- package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/roots-list-request.json +5 -0
- package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/screenshot.json +17 -0
- package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/snapshot-filename.json +12 -0
- package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/snapshot-meta-json.json +12 -0
- package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/snapshot-meta-raw.json +12 -0
- package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/snapshot.json +12 -0
- package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/tools-list.json +827 -0
- package/skills/agent-browser/test/fixtures/proxy-session-driver.py +138 -0
- package/skills/agent-browser/test/fixtures/session-facts.py +102 -0
- package/skills/agent-browser/test/playwright-mcp-lifetime.test.sh +1620 -0
- package/skills/agent-browser/test/playwright-mcp-redact-proxy.test.sh +1599 -0
- package/skills/agent-browser/test/redact-a11y-snapshot.test.sh +527 -0
- package/skills/agent-native-architecture/SKILL.md +479 -0
- package/skills/agent-native-architecture/references/action-parity-discipline.md +430 -0
- package/skills/agent-native-architecture/references/agent-execution-patterns.md +483 -0
- package/skills/agent-native-architecture/references/agent-native-testing.md +605 -0
- package/skills/agent-native-architecture/references/architecture-patterns.md +493 -0
- package/skills/agent-native-architecture/references/dynamic-context-injection.md +358 -0
- package/skills/agent-native-architecture/references/files-universal-interface.md +314 -0
- package/skills/agent-native-architecture/references/from-primitives-to-domain-tools.md +381 -0
- package/skills/agent-native-architecture/references/mcp-tool-design.md +524 -0
- package/skills/agent-native-architecture/references/mobile-patterns.md +897 -0
- package/skills/agent-native-architecture/references/product-implications.md +478 -0
- package/skills/agent-native-architecture/references/refactoring-to-prompt-native.md +342 -0
- package/skills/agent-native-architecture/references/self-modification.md +294 -0
- package/skills/agent-native-architecture/references/shared-workspace-architecture.md +700 -0
- package/skills/agent-native-architecture/references/system-prompt-design.md +263 -0
- package/skills/agent-native-audit/SKILL.md +300 -0
- package/skills/agent-native-audit/workflows/agent-native-audit.workflow.js +423 -0
- package/skills/andrew-kane-gem-writer/SKILL.md +189 -0
- package/skills/andrew-kane-gem-writer/references/database-adapters.md +231 -0
- package/skills/andrew-kane-gem-writer/references/module-organization.md +121 -0
- package/skills/andrew-kane-gem-writer/references/rails-integration.md +183 -0
- package/skills/andrew-kane-gem-writer/references/resources.md +126 -0
- package/skills/andrew-kane-gem-writer/references/testing-patterns.md +261 -0
- package/skills/architecture/SKILL.md +436 -0
- package/skills/architecture/references/adr-template.md +154 -0
- package/skills/architecture/references/likec4-reference.md +136 -0
- package/skills/architecture/references/nfr-reference.md +126 -0
- package/skills/archive-kb/SKILL.md +86 -0
- package/skills/archive-kb/scripts/archive-kb.sh +300 -0
- package/skills/archive-kb/test/archive-kb-partial-run.test.sh +276 -0
- package/skills/atdd-developer/SKILL.md +65 -0
- package/skills/brainstorm/SKILL.md +701 -0
- package/skills/brainstorm/references/brainstorm-brand-workshop.md +153 -0
- package/skills/brainstorm/references/brainstorm-domain-config.md +63 -0
- package/skills/brainstorm/references/brainstorm-validation-workshop.md +65 -0
- package/skills/brainstorm/references/ui-surface-terms.md +42 -0
- package/skills/brainstorm-techniques/SKILL.md +231 -0
- package/skills/brainstorm-techniques/references/decision-principles.md +150 -0
- package/skills/brainstorm-techniques/references/phase-boundaries.md +103 -0
- package/skills/brainstorm-techniques/references/standing-delegation.md +407 -0
- package/skills/brainstorm-techniques/references/technical-ruling-delegation.md +174 -0
- package/skills/campaign-calendar/SKILL.md +145 -0
- package/skills/cf-token-scope/SKILL.md +164 -0
- package/skills/cf-token-scope/references/widen-playbook.md +114 -0
- package/skills/cf-token-scope/scripts/cf-token-scope.sh +253 -0
- package/skills/changelog/SKILL.md +142 -0
- package/skills/code-to-prd/SKILL.md +66 -0
- package/skills/code-to-prd/references/banner-template.md +12 -0
- package/skills/code-to-prd/references/prd-template.md +41 -0
- package/skills/code-to-prd/scripts/code-to-prd.sh +634 -0
- package/skills/code-to-prd/test/code-to-prd.test.sh +447 -0
- package/skills/code-to-prd/test/fixture/.env.example +7 -0
- package/skills/code-to-prd/test/fixture/app/about/page.tsx +11 -0
- package/skills/code-to-prd/test/fixture/app/api/health/route.ts +10 -0
- package/skills/code-to-prd/test/fixture/app/page.tsx +14 -0
- package/skills/code-to-prd/test/fixture/next.config.mjs +3 -0
- package/skills/code-to-prd/test/fixture/package.json +6 -0
- package/skills/cohort-status/SKILL.md +62 -0
- package/skills/community/SKILL.md +210 -0
- package/skills/community/scripts/bsky-community.sh +644 -0
- package/skills/community/scripts/bsky-setup.sh +631 -0
- package/skills/community/scripts/community-router.sh +93 -0
- package/skills/community/scripts/discord-community.sh +487 -0
- package/skills/community/scripts/discord-setup.sh +784 -0
- package/skills/community/scripts/github-community.sh +706 -0
- package/skills/community/scripts/hn-community.sh +233 -0
- package/skills/community/scripts/lib/hmac-sha1-b64.sh +126 -0
- package/skills/community/scripts/linkedin-community.sh +750 -0
- package/skills/community/scripts/linkedin-setup.sh +758 -0
- package/skills/community/scripts/x-community.sh +890 -0
- package/skills/community/scripts/x-setup.sh +713 -0
- package/skills/community/test/community-argv.test.sh +2922 -0
- package/skills/community/test/github-community.test.sh +981 -0
- package/skills/competitive-analysis/SKILL.md +69 -0
- package/skills/competitive-analysis/references/peer-plugin-audit.md +218 -0
- package/skills/compound/SKILL.md +673 -0
- package/skills/compound/scripts/token-efficiency-report.sh +334 -0
- package/skills/compound/test/phase-16.test.sh +379 -0
- package/skills/compound-capture/SKILL.md +791 -0
- package/skills/compound-capture/assets/critical-pattern-template.md +37 -0
- package/skills/compound-capture/assets/resolution-template.md +116 -0
- package/skills/compound-capture/references/yaml-schema.md +67 -0
- package/skills/compound-capture/schema.yaml +181 -0
- package/skills/constraint-scaffold/SKILL.md +175 -0
- package/skills/constraint-scaffold/references/boundary-readme.template +35 -0
- package/skills/constraint-scaffold/references/constraint-gates-workflow.template +69 -0
- package/skills/constraint-scaffold/references/depcruise-config.template +230 -0
- package/skills/constraint-scaffold/references/fix-constraints-stage-a.template +240 -0
- package/skills/constraint-scaffold/references/fix-constraints-stage-b.template +313 -0
- package/skills/constraint-scaffold/references/shared-runner.template +135 -0
- package/skills/constraint-scaffold/scripts/constraint-scaffold.sh +589 -0
- package/skills/constraint-scaffold/test/bite-proof.test.sh +1338 -0
- package/skills/constraint-scaffold/test/boundary.test.sh +734 -0
- package/skills/constraint-scaffold/test/emit-fix-constraints.test.sh +193 -0
- package/skills/constraint-scaffold/test/generator.test.sh +93 -0
- package/skills/constraint-scaffold/test/parity.test.sh +285 -0
- package/skills/content-writer/SKILL.md +242 -0
- package/skills/content-writer/scripts/blog-jargon-scan.sh +42 -0
- package/skills/cron-delete/SKILL.md +56 -0
- package/skills/cron-list/SKILL.md +54 -0
- package/skills/deepen-plan/SKILL.md +937 -0
- package/skills/deepen-plan/workflows/deepen-plan.workflow.js +488 -0
- package/skills/deploy/SKILL.md +115 -0
- package/skills/deploy/references/hetzner-setup.md +65 -0
- package/skills/deploy/scripts/deploy.sh +37 -0
- package/skills/deploy-docs/SKILL.md +95 -0
- package/skills/dhh-rails-style/SKILL.md +203 -0
- package/skills/dhh-rails-style/references/architecture.md +717 -0
- package/skills/dhh-rails-style/references/controllers.md +323 -0
- package/skills/dhh-rails-style/references/frontend.md +556 -0
- package/skills/dhh-rails-style/references/gems.md +316 -0
- package/skills/dhh-rails-style/references/models.md +388 -0
- package/skills/dhh-rails-style/references/testing.md +354 -0
- package/skills/discord-content/SKILL.md +126 -0
- package/skills/docs-site/SKILL.md +214 -0
- package/skills/drain-labeled-backlog/SKILL.md +203 -0
- package/skills/drain-labeled-backlog/scripts/group-by-area.sh +208 -0
- package/skills/drain-labeled-backlog/workflows/drain-labeled-backlog.workflow.js +433 -0
- package/skills/drain-prs/SKILL.md +142 -0
- package/skills/drain-prs/scripts/triage-prs.sh +192 -0
- package/skills/drain-prs/test/argv-ceiling.test.sh +183 -0
- package/skills/dspy-ruby/SKILL.md +634 -0
- package/skills/dspy-ruby/assets/config-template.rb +359 -0
- package/skills/dspy-ruby/assets/module-template.rb +326 -0
- package/skills/dspy-ruby/assets/signature-template.rb +143 -0
- package/skills/dspy-ruby/references/core-concepts.md +268 -0
- package/skills/dspy-ruby/references/optimization.md +623 -0
- package/skills/dspy-ruby/references/providers.md +335 -0
- package/skills/eval-harness/README.md +194 -0
- package/skills/eval-harness/SKILL.md +157 -0
- package/skills/eval-harness/enums/go-routes.json +13 -0
- package/skills/eval-harness/enums/incident-threshold.json +5 -0
- package/skills/eval-harness/enums/lane.json +5 -0
- package/skills/eval-harness/enums/tool-selection.json +20 -0
- package/skills/eval-harness/enums/triage-levels.json +5 -0
- package/skills/eval-harness/gated-skills.json +34 -0
- package/skills/eval-harness/models.generated.json +5 -0
- package/skills/eval-harness/promptfooconfig-go-routing.yaml +35 -0
- package/skills/eval-harness/promptfooconfig-incident-threshold.yaml +32 -0
- package/skills/eval-harness/promptfooconfig-lane-inference.yaml +33 -0
- package/skills/eval-harness/promptfooconfig-ticket-triage.yaml +34 -0
- package/skills/eval-harness/promptfooconfig-tool-selection.yaml +33 -0
- package/skills/eval-harness/prompts/go-baseline.txt +6 -0
- package/skills/eval-harness/prompts/go-skill.txt +21 -0
- package/skills/eval-harness/prompts/incident-threshold-baseline.txt +6 -0
- package/skills/eval-harness/prompts/incident-threshold-skill.txt +12 -0
- package/skills/eval-harness/prompts/lane-inference-baseline.txt +6 -0
- package/skills/eval-harness/prompts/lane-inference-skill.txt +15 -0
- package/skills/eval-harness/prompts/tool-selection-baseline.txt +19 -0
- package/skills/eval-harness/prompts/tool-selection-skill.txt +22 -0
- package/skills/eval-harness/prompts/triage-baseline.txt +7 -0
- package/skills/eval-harness/prompts/triage-skill.txt +10 -0
- package/skills/eval-harness/scripts/eval-gate.cjs +318 -0
- package/skills/eval-harness/scripts/extract-block.cjs +87 -0
- package/skills/eval-harness/scripts/gate-classification.cjs +28 -0
- package/skills/eval-harness/scripts/gen-models.sh +41 -0
- package/skills/eval-harness/scripts/gen-skill-prompt.cjs +177 -0
- package/skills/eval-harness/scripts/measure-classification.cjs +30 -0
- package/skills/eval-harness/scripts/parse-label.cjs +93 -0
- package/skills/eval-harness/scripts/verdict.cjs +132 -0
- package/skills/eval-harness/tasks/go-routing.jsonl +8 -0
- package/skills/eval-harness/tasks/incident-threshold.jsonl +7 -0
- package/skills/eval-harness/tasks/lane-inference.jsonl +7 -0
- package/skills/eval-harness/tasks/ticket-triage.jsonl +6 -0
- package/skills/eval-harness/tasks/tool-selection.jsonl +15 -0
- package/skills/eval-harness/test/eval-gate.test.sh +132 -0
- package/skills/eval-harness/test/extract-block.test.sh +87 -0
- package/skills/eval-harness/test/gate-classification.test.sh +77 -0
- package/skills/eval-harness/test/gen-models.test.sh +75 -0
- package/skills/eval-harness/test/measure-classification.test.sh +74 -0
- package/skills/eval-harness/test/parse-label.test.sh +129 -0
- package/skills/eval-harness/test/registry-completeness.test.sh +109 -0
- package/skills/eval-harness/test/verdict.test.sh +123 -0
- package/skills/every-style-editor/SKILL.md +142 -0
- package/skills/every-style-editor/references/EVERY_WRITE_STYLE.md +529 -0
- package/skills/feature-tweet/SKILL.md +199 -0
- package/skills/feature-video/SKILL.md +412 -0
- package/skills/feature-video/scripts/check_deps.sh +281 -0
- package/skills/file-todos/SKILL.md +267 -0
- package/skills/file-todos/assets/todo-template.md +166 -0
- package/skills/fix-issue/SKILL.md +278 -0
- package/skills/fix-issue/references/agent-authored-exclusion.md +118 -0
- package/skills/fix-issue/references/exclude-label-jq-snippet.md +96 -0
- package/skills/flag-bootstrap/SETUP.md +142 -0
- package/skills/flag-create/SKILL.md +145 -0
- package/skills/flag-create/scripts/create.sh +273 -0
- package/skills/flag-delete/SKILL.md +167 -0
- package/skills/flag-delete/scripts/delete.sh +288 -0
- package/skills/flag-list/SKILL.md +99 -0
- package/skills/flag-list/scripts/list.sh +275 -0
- package/skills/flag-set-role/SKILL.md +229 -0
- package/skills/flag-set-role/scripts/flip.sh +774 -0
- package/skills/frontend-anti-slop/SKILL.md +106 -0
- package/skills/frontend-anti-slop/references/anti-patterns.md +199 -0
- package/skills/frontend-anti-slop/references/slop-rules.md +65 -0
- package/skills/frontend-anti-slop/scripts/tier1-scan.ts +525 -0
- package/skills/frontend-design/SKILL.md +77 -0
- package/skills/gdpr-gate/NOTICE +136 -0
- package/skills/gdpr-gate/SKILL.md +341 -0
- package/skills/gdpr-gate/references/fields.md +160 -0
- package/skills/gdpr-gate/references/layers/api-layer.md +355 -0
- package/skills/gdpr-gate/references/layers/auth-sessions.md +290 -0
- package/skills/gdpr-gate/references/layers/data-in-transit.md +331 -0
- package/skills/gdpr-gate/references/layers/data-lifecycle.md +341 -0
- package/skills/gdpr-gate/references/layers/frontend.md +249 -0
- package/skills/gdpr-gate/references/layers/testing-seeding.md +256 -0
- package/skills/gdpr-gate/references/leakage-vectors.md +248 -0
- package/skills/gdpr-gate/references/legacy/legal-consent-v1-prose.md +48 -0
- package/skills/gdpr-gate/references/legal-consent.md +140 -0
- package/skills/gdpr-gate/references/non-negotiables.md +60 -0
- package/skills/gdpr-gate/scripts/gdpr-gate.sh +271 -0
- package/skills/gdpr-gate/scripts/notice-frontmatter.sh +337 -0
- package/skills/gdpr-gate/scripts/path-denylist.txt +39 -0
- package/skills/gdpr-gate/scripts/repo-scan.sh +158 -0
- package/skills/gdpr-gate/scripts/vendor-drift-classify.sh +120 -0
- package/skills/gdpr-gate/scripts/vendor-pin-integrity.sh +237 -0
- package/skills/gemini-imagegen/SKILL.md +283 -0
- package/skills/gemini-imagegen/requirements.txt +5 -0
- package/skills/gemini-imagegen/scripts/_error_handling.py +146 -0
- package/skills/gemini-imagegen/scripts/compose_images.py +150 -0
- package/skills/gemini-imagegen/scripts/edit_image.py +137 -0
- package/skills/gemini-imagegen/scripts/gemini_images.py +256 -0
- package/skills/gemini-imagegen/scripts/generate_image.py +147 -0
- package/skills/gemini-imagegen/scripts/multi_turn_chat.py +223 -0
- package/skills/gemini-imagegen/scripts/test_error_handling.py +179 -0
- package/skills/git-worktree/SKILL.md +534 -0
- package/skills/git-worktree/scripts/git-repo-readiness-diag.sh +98 -0
- package/skills/git-worktree/scripts/worktree-manager.sh +4773 -0
- package/skills/git-worktree/test/create-from-origin-main.test.sh +116 -0
- package/skills/git-worktree/test/lease-protects-active.test.sh +1056 -0
- package/skills/git-worktree/test/no-repo-fail-loud.test.sh +88 -0
- package/skills/git-worktree/test/orphan-reaper-honest-count.test.sh +379 -0
- package/skills/git-worktree/test/reap-archive-persistence.test.sh +725 -0
- package/skills/git-worktree/test/stale-lock-sweep.test.sh +176 -0
- package/skills/go/SKILL.md +54 -0
- package/skills/growth/SKILL.md +164 -0
- package/skills/harvest-debt/SKILL.md +78 -0
- package/skills/harvest-debt/scripts/harvest-debt.sh +114 -0
- package/skills/heal-skill/SKILL.md +173 -0
- package/skills/help/SKILL.md +46 -0
- package/skills/incident/NOTICE +39 -0
- package/skills/incident/SKILL.md +395 -0
- package/skills/incident/scripts/dry-run.sh +448 -0
- package/skills/incident/scripts/redact-engine.py +412 -0
- package/skills/incident/scripts/redact-sentinel.sh +44 -0
- package/skills/incident/templates/pir.md +139 -0
- package/skills/incident/test/fixtures/dry-run-incident.json +26 -0
- package/skills/incident/test/fixtures/dry-run-secret-leak.json +26 -0
- package/skills/incident/test/fixtures/legacy-bash-scanner.sh +82 -0
- package/skills/incident/test/fixtures/positive-corpus.md +87 -0
- package/skills/incident/test/redact-sentinel.test.sh +1420 -0
- package/skills/invoice/SKILL.md +206 -0
- package/skills/kb-glossary/SKILL.md +71 -0
- package/skills/kb-glossary/references/glossary-format.md +111 -0
- package/skills/kb-glossary/references/rejected-request-register.md +115 -0
- package/skills/kb-search/SKILL.md +276 -0
- package/skills/kb-search/scripts/kb-search-cache.sh +123 -0
- package/skills/legal-audit/SKILL.md +161 -0
- package/skills/legal-generate/NOTICE +242 -0
- package/skills/legal-generate/SKILL.md +244 -0
- package/skills/legal-generate/references/templates/advisor-agreement/template.md +12 -0
- package/skills/legal-generate/references/templates/business-associate-agreement/template.md +112 -0
- package/skills/legal-generate/references/templates/cookie-notice/template.md +82 -0
- package/skills/legal-generate/references/templates/dpa-global/template.md +439 -0
- package/skills/legal-generate/references/templates/dpa-us/template.md +222 -0
- package/skills/legal-generate/references/templates/employee-offer-letter/template.md +75 -0
- package/skills/legal-generate/references/templates/master-services-agreement/template.md +252 -0
- package/skills/legal-generate/references/templates/mutual-nda/template.md +66 -0
- package/skills/legal-generate/references/templates/one-way-nda/template.md +38 -0
- package/skills/legal-generate/references/templates/privacy-policy-gdpr/template.md +427 -0
- package/skills/legal-generate/references/templates/privacy-policy-us/template.md +313 -0
- package/skills/legal-generate/references/templates/terms-of-use/template.md +75 -0
- package/skills/legal-generate/scripts/strip-vendor-credit.sh +96 -0
- package/skills/linear-fetch/SKILL.md +247 -0
- package/skills/linear-fetch/scripts/assert-no-linear-telemetry.sh +66 -0
- package/skills/linear-fetch/scripts/redact-linear-urls.sh +51 -0
- package/skills/linear-fetch/scripts/render-caller-template.sh +36 -0
- package/skills/linear-fetch/test/assert-no-linear-telemetry.test.sh +113 -0
- package/skills/linear-fetch/test/parity.test.sh +112 -0
- package/skills/linear-fetch/test/persist-safe-integration.test.sh +191 -0
- package/skills/linear-fetch/test/redact-linear-urls.test.sh +226 -0
- package/skills/merge-pr/SKILL.md +668 -0
- package/skills/model-launch-review/SKILL.md +255 -0
- package/skills/model-launch-review/scripts/audit-models.sh +501 -0
- package/skills/one-shot/SKILL.md +316 -0
- package/skills/one-shot/references/token-discipline.md +74 -0
- package/skills/operator-bootstrap/SKILL.md +412 -0
- package/skills/operator-bootstrap/template.sh +439 -0
- package/skills/operator-digest/SKILL.md +287 -0
- package/skills/operator-digest/assets/operator-digest.workflow.yml +175 -0
- package/skills/operator-digest/scripts/digest-scrub.sh +119 -0
- package/skills/operator-digest/scripts/provision-operator-digest-repo.sh +147 -0
- package/skills/operator-rephrase/SKILL.md +98 -0
- package/skills/pencil-setup/SKILL.md +201 -0
- package/skills/pencil-setup/scripts/check_deps.sh +556 -0
- package/skills/pencil-setup/scripts/copy_adapter.sh +80 -0
- package/skills/pencil-setup/scripts/package-lock.json +1172 -0
- package/skills/pencil-setup/scripts/package.json +14 -0
- package/skills/pencil-setup/scripts/pencil-error-enrichment.mjs +21 -0
- package/skills/pencil-setup/scripts/pencil-mcp-adapter.mjs +733 -0
- package/skills/pencil-setup/scripts/pencil-response-classify.mjs +38 -0
- package/skills/pencil-setup/scripts/pencil-save-gate.mjs +26 -0
- package/skills/pencil-setup/scripts/sanitize-filename.mjs +25 -0
- package/skills/plan/SKILL.md +1140 -0
- package/skills/plan/references/differential-migration-testing.md +185 -0
- package/skills/plan/references/plan-community-discovery.md +42 -0
- package/skills/plan/references/plan-founder-check.md +137 -0
- package/skills/plan/references/plan-functional-overlap.md +25 -0
- package/skills/plan/references/plan-host-fanout.md +51 -0
- package/skills/plan/references/plan-issue-templates.md +779 -0
- package/skills/plan/references/plan-network-outage-checklist.md +131 -0
- package/skills/plan/references/plan-scope-check.md +126 -0
- package/skills/plan/references/plan-sharp-edges.md +325 -0
- package/skills/plan/references/plan-signoff-lifecycle.md +12 -0
- package/skills/plan/references/webapp-cwv-observability.md +143 -0
- package/skills/plan-review/SKILL.md +91 -0
- package/skills/plan-review/lib/named-panel.mjs +58 -0
- package/skills/plan-review/workflows/plan-review.workflow.js +477 -0
- package/skills/postmerge/SKILL.md +642 -0
- package/skills/postmerge/references/deploy-status-debugging.md +138 -0
- package/skills/postmerge/references/graceful-degradation.md +20 -0
- package/skills/postmerge/references/sentry-error-count-delta.md +137 -0
- package/skills/preflight/SKILL.md +1553 -0
- package/skills/preflight/references/check-13-founder-check.md +286 -0
- package/skills/preflight/scripts/founder-check.py +1640 -0
- package/skills/preflight/scripts/parse-form-a.awk +107 -0
- package/skills/preflight/scripts/probe-verb-gate.sh +108 -0
- package/skills/product-roadmap/SKILL.md +357 -0
- package/skills/product-roadmap/scripts/roadmap-reconcile.sh +327 -0
- package/skills/provision-cloudflare/SKILL.md +67 -0
- package/skills/provision-cloudflare/scripts/provision-cloudflare.sh +271 -0
- package/skills/provision-doppler/SKILL.md +58 -0
- package/skills/provision-doppler/scripts/provision-doppler.sh +358 -0
- package/skills/provision-github/SKILL.md +59 -0
- package/skills/provision-github/scripts/provision-github.sh +300 -0
- package/skills/provision-hetzner/SKILL.md +76 -0
- package/skills/provision-hetzner/scripts/provision-hetzner.sh +262 -0
- package/skills/provision-hetzner/test/fixture/knowledge-base/legal/tenant-dpa-register.md +26 -0
- package/skills/provision-hetzner/test/fixture/provision-hetzner-dry-run.golden +34 -0
- package/skills/provision-hetzner/test/provision-hetzner-characterization.test.sh +227 -0
- package/skills/qa/SKILL.md +263 -0
- package/skills/qa/references/browser-preflight.md +22 -0
- package/skills/questionnaire-generate/SKILL.md +328 -0
- package/skills/questionnaire-generate/references/questionnaire.template +60 -0
- package/skills/rclone/SKILL.md +162 -0
- package/skills/rclone/scripts/check_setup.sh +63 -0
- package/skills/release-announce/SKILL.md +65 -0
- package/skills/release-docs/SKILL.md +92 -0
- package/skills/reproduce-bug/SKILL.md +358 -0
- package/skills/resolve-debt/SKILL.md +85 -0
- package/skills/resolve-debt/scripts/resolve-debt.py +584 -0
- package/skills/resolve-parallel/SKILL.md +45 -0
- package/skills/resolve-parallel/workflows/resolve-parallel.workflow.js +415 -0
- package/skills/resolve-pr-parallel/SKILL.md +68 -0
- package/skills/resolve-pr-parallel/workflows/resolve-pr-parallel.workflow.js +419 -0
- package/skills/resolve-todo-parallel/SKILL.md +57 -0
- package/skills/resolve-todo-parallel/workflows/resolve-todo-parallel.workflow.js +398 -0
- package/skills/review/SKILL.md +1621 -0
- package/skills/review/references/anti-slop-scanner-hook.md +40 -0
- package/skills/review/references/defect-classes-migrations.md +9 -0
- package/skills/review/references/generated-input-oracle-surfaces.md +15 -0
- package/skills/review/references/review-e2e-testing.md +116 -0
- package/skills/review/references/review-todo-structure.md +165 -0
- package/skills/review/references/risk-tier-and-fix-rounds.md +95 -0
- package/skills/review/references/semgrep-custom-rules.yaml +174 -0
- package/skills/review/references/ultrathink-phases.md +98 -0
- package/skills/review/references/wfs.md +6 -0
- package/skills/review/scripts/emit-review-trailer.sh +499 -0
- package/skills/review/scripts/ensure-semgrep.sh +99 -0
- package/skills/review/scripts/fix-round-seats.sh +197 -0
- package/skills/review/test/emit-review-trailer.test.sh +387 -0
- package/skills/review/test/ensure-semgrep.test.sh +111 -0
- package/skills/review/test/fix-round-seats.test.sh +237 -0
- package/skills/review/workflows/README.md +147 -0
- package/skills/review/workflows/review.workflow.js +667 -0
- package/skills/schedule/SKILL.md +796 -0
- package/skills/seo-aeo/SKILL.md +139 -0
- package/skills/seo-aeo/scripts/validate-csp.sh +233 -0
- package/skills/seo-aeo/scripts/validate-seo.sh +262 -0
- package/skills/ship/SKILL.md +3022 -0
- package/skills/ship/references/adr-ordinal-collision.md +47 -0
- package/skills/ship/references/affected-gate-contract.md +115 -0
- package/skills/ship/references/ci-run-diagnosis.md +29 -0
- package/skills/ship/references/ci-workflow-authoring.md +68 -0
- package/skills/ship/references/counsel-review-clo-attestation.md +38 -0
- package/skills/ship/references/cto-ruling-armed-push.md +5 -0
- package/skills/ship/references/decision-challenges-render.md +71 -0
- package/skills/ship/references/detached-battery-verdict.md +13 -0
- package/skills/ship/references/feature-tweet-draft.md +42 -0
- package/skills/ship/references/followthrough-issue-body-template.md +47 -0
- package/skills/ship/references/followthrough-stub-template.sh +92 -0
- package/skills/ship/references/merge-queue-dequeue.md +39 -0
- package/skills/ship/references/operator-holds.md +149 -0
- package/skills/ship/references/pipeline-tally-render.md +43 -0
- package/skills/ship/references/pr-overlap.md +153 -0
- package/skills/ship/references/queue-mode.md +7 -0
- package/skills/ship/references/ready-run-wait.md +36 -0
- package/skills/ship/references/red-on-main-quarantine.md +110 -0
- package/skills/ship/references/register-update-pr-pattern.md +88 -0
- package/skills/ship/references/settle-then-admin-merge.md +130 -0
- package/skills/ship/references/supabase-column-probe.md +13 -0
- package/skills/ship/scripts/auto-close-scan.sh +76 -0
- package/skills/ship/scripts/battery-owed.sh +403 -0
- package/skills/ship/scripts/hold-gate-eval.sh +410 -0
- package/skills/ship/scripts/net-issue-flow.sh +665 -0
- package/skills/ship/scripts/pr-overlap-preflight.sh +483 -0
- package/skills/ship/scripts/ship-pir-action-items-gate.sh +246 -0
- package/skills/ship/scripts/technical-ruling-gate.sh +444 -0
- package/skills/skill-creator/SKILL.md +299 -0
- package/skills/skill-creator/references/api-security.md +248 -0
- package/skills/skill-creator/references/authoring-levers.md +110 -0
- package/skills/skill-creator/references/be-clear-and-direct.md +587 -0
- package/skills/skill-creator/references/best-practices.md +431 -0
- package/skills/skill-creator/references/common-patterns.md +639 -0
- package/skills/skill-creator/references/core-principles.md +193 -0
- package/skills/skill-creator/references/executable-code.md +188 -0
- package/skills/skill-creator/references/iteration-and-testing.md +509 -0
- package/skills/skill-creator/references/official-spec.md +193 -0
- package/skills/skill-creator/references/recommended-structure.md +180 -0
- package/skills/skill-creator/references/skill-structure.md +396 -0
- package/skills/skill-creator/references/using-scripts.md +122 -0
- package/skills/skill-creator/references/using-templates.md +120 -0
- package/skills/skill-creator/references/workflows-and-validation.md +541 -0
- package/skills/skill-creator/scripts/init_skill.py +322 -0
- package/skills/skill-creator/scripts/package_skill.py +110 -0
- package/skills/skill-creator/scripts/quick_validate.py +64 -0
- package/skills/skill-creator/templates/router-skill.md +73 -0
- package/skills/skill-creator/templates/simple-skill.md +34 -0
- package/skills/skill-creator/workflows/add-reference.md +96 -0
- package/skills/skill-creator/workflows/add-script.md +104 -0
- package/skills/skill-creator/workflows/add-template.md +83 -0
- package/skills/skill-creator/workflows/add-workflow.md +128 -0
- package/skills/skill-creator/workflows/audit-skill.md +159 -0
- package/skills/skill-creator/workflows/create-domain-expertise-skill.md +623 -0
- package/skills/skill-creator/workflows/create-new-skill.md +207 -0
- package/skills/skill-creator/workflows/get-guidance.md +134 -0
- package/skills/skill-creator/workflows/upgrade-to-router.md +170 -0
- package/skills/skill-creator/workflows/verify-skill.md +226 -0
- package/skills/skill-security-scan/SKILL.md +145 -0
- package/skills/skill-security-scan/references/disclaimer.md +21 -0
- package/skills/skill-security-scan/references/first-party-allowlist.yaml +38 -0
- package/skills/skill-security-scan/references/override-artifact-schema.json +68 -0
- package/skills/skill-security-scan/references/override-mechanism.md +171 -0
- package/skills/skill-security-scan/references/redirect-domains.yaml +27 -0
- package/skills/skill-security-scan/references/regex-patterns.md +136 -0
- package/skills/skill-security-scan/references/rules/code-exec.yaml +70 -0
- package/skills/skill-security-scan/references/rules/filesystem-boundary.yaml +29 -0
- package/skills/skill-security-scan/references/rules/manifest.yaml +44 -0
- package/skills/skill-security-scan/references/rules/supply-chain.yaml +36 -0
- package/skills/skill-security-scan/references/scan-meta-schema.json +63 -0
- package/skills/skill-security-scan/references/test-fixtures/clean-soleur-style.skill.md +23 -0
- package/skills/skill-security-scan/references/test-fixtures/clean-third-party.skill.md +26 -0
- package/skills/skill-security-scan/references/test-fixtures/malicious-codeexec.skill.md +23 -0
- package/skills/skill-security-scan/references/test-fixtures/malicious-curl-pipe-bash.skill.md +69 -0
- package/skills/skill-security-scan/references/test-fixtures/malicious-prompt-injection.skill.md +17 -0
- package/skills/skill-security-scan/references/test-fixtures/malicious-telemetry-beacon.skill.md +23 -0
- package/skills/skill-security-scan/references/typosquat-targets.yaml +65 -0
- package/skills/skill-security-scan/scripts/check-codeexec.sh +41 -0
- package/skills/skill-security-scan/scripts/check-filesystem-boundary.sh +19 -0
- package/skills/skill-security-scan/scripts/check-prompt-injection.sh +95 -0
- package/skills/skill-security-scan/scripts/check-supply-chain.sh +219 -0
- package/skills/skill-security-scan/scripts/check-telemetry-surface.sh +126 -0
- package/skills/skill-security-scan/scripts/lib.sh +197 -0
- package/skills/skill-security-scan/scripts/parse-override.sh +231 -0
- package/skills/skill-security-scan/scripts/run-scan.sh +342 -0
- package/skills/skill-security-scan/scripts/run-self-test.sh +95 -0
- package/skills/skill-security-scan/test/argv-ceiling.test.sh +180 -0
- package/skills/skill-security-scan/test/meta-dir-reap.test.sh +411 -0
- package/skills/skill-security-scan/test/parse-override.test.sh +607 -0
- package/skills/skill-security-scan/test/redact-pii-ghs-shape.test.sh +251 -0
- package/skills/social-distribute/SKILL.md +485 -0
- package/skills/spec-templates/SKILL.md +274 -0
- package/skills/sync/SKILL.md +49 -0
- package/skills/test-browser/SKILL.md +464 -0
- package/skills/test-browser/references/feature-map.md +161 -0
- package/skills/test-fix-loop/SKILL.md +159 -0
- package/skills/test-fix-loop/references/determinism-checklist.md +154 -0
- package/skills/triage/SKILL.md +402 -0
- package/skills/trigger-cron/SKILL.md +136 -0
- package/skills/trigger-cron/scripts/trigger.sh +198 -0
- package/skills/user-set-role/SKILL.md +147 -0
- package/skills/user-set-role/scripts/set-role.sh +218 -0
- package/skills/user-story-writer/SKILL.md +77 -0
- package/skills/ux-audit/SKILL.md +251 -0
- package/skills/ux-audit/references/finding.schema.json +62 -0
- package/skills/ux-audit/references/route-list.yaml +95 -0
- package/skills/ux-audit/scripts/bot-fixture.ts +270 -0
- package/skills/ux-audit/scripts/bot-signin.ts +135 -0
- package/skills/ux-audit/scripts/dedup-hash.ts +46 -0
- package/skills/work/SKILL.md +1479 -0
- package/skills/work/references/end-of-work-resume.md +7 -0
- package/skills/work/references/hook-test-main-cwd.md +24 -0
- package/skills/work/references/key-principles.md +83 -0
- package/skills/work/references/property-testing.md +122 -0
- package/skills/work/references/sql-security-definer-rpc-scaffold.sql +78 -0
- package/skills/work/references/work-agent-teams.md +97 -0
- package/skills/work/references/work-lifecycle-parallel.md +147 -0
- package/skills/work/references/work-lockfile-bumps.md +97 -0
- package/skills/work/references/work-scratch-sandboxes.md +212 -0
- package/skills/work/references/work-subagent-fanout.md +61 -0
- package/skills/work/references/work-test-harness-sharp-edges.md +73 -0
- package/skills/xcode-test/SKILL.md +360 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: eval-harness
|
|
3
|
+
description: This skill provides a promptfoo eval harness that measures whether a Soleur skill or agent edit actually improves behavior, comparing a skill arm against a baseline control arm.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- soleur-cloud-mode:start -->
|
|
7
|
+
**Cloud Mode (Devin):** before pipeline work run `bash "${CLAUDE_PLUGIN_ROOT}/scripts/cloud-detect.sh"`. If `CLAUDE_PLUGIN_ROOT` is unset (cloud exec shells do not export it), resolve the root by IDENTITY, never by script basename: for `d` in `"$HOME/.local/share/devin/cli/plugins/cache"` and `/opt/.devin/plugins`, skip unless `[ -d "$d" ]`, then `MANIFEST="$(find "$d" -path '*/.claude-plugin/plugin.json' -exec grep -l '"name"[[:space:]]*:[[:space:]]*"soleur"' {} + 2>/dev/null | head -1)"`, `ROOT="${MANIFEST%/.claude-plugin/plugin.json}"` — one resolution, two consumers: `$ROOT/scripts/cloud-detect.sh` and `$ROOT/scripts/precommit-guard.sh`. (Shape check, not authentication: a planted `{"name":"soleur"}` dir passes — ADR-179 A11.) `local` or `not-local:no-devin-env` proceeds normally; any other `not-local:<reason>` applies `<plugin-root>/devin/INSTRUCTIONS.md` §Cloud Mode: emit the `--banner`, fan out sequentially with `Reviewed-Coverage: sequential-fallback` disclosure (never claim an independent review ran), `message_user` ack before any secrets read or production mutation, and run `precommit-guard.sh` before any `git commit` — hooks do not fire in cloud.
|
|
8
|
+
<!-- soleur-cloud-mode:end -->
|
|
9
|
+
|
|
10
|
+
<!-- grok-harness-invoke:start -->
|
|
11
|
+
**Grok Build (`plugins/soleur/lib/harness.ts` `invokeSkill()`):** Read this SKILL.md in this process and run it to completion. A one-segment `soleur:<name>` in this document names a SKILL — on Grok Build, Read `plugins/soleur/skills/<name>/SKILL.md` in this process; it is not a nested tool_use. A multi-segment id such as `soleur:<domain>:<name>` names an AGENT: spawn it, never Read it, and on Grok Build spawn_subagent takes the id with its colons replaced by hyphens (`agentIdToGrokSubagentType`). **Claude Code:** Skill tool for a skill (`soleur:<name>`), Task tool with `subagent_type` for an agent. Forbidden is executing a subset, not the Read.
|
|
12
|
+
<!-- grok-harness-invoke:end -->
|
|
13
|
+
|
|
14
|
+
# Eval Harness — empirical prompt/agent regression checking
|
|
15
|
+
|
|
16
|
+
A reproducible [promptfoo](https://www.promptfoo.dev) harness that answers the question
|
|
17
|
+
Soleur could not answer before: *does this prompt/agent edit actually change behavior, or
|
|
18
|
+
does it just carry new text?* It adapts the benchmark methodology of the
|
|
19
|
+
[ponytail](https://github.com/DietrichGebert/ponytail) Claude Code plugin (MIT) to Soleur's
|
|
20
|
+
own surfaces.
|
|
21
|
+
|
|
22
|
+
**v1 targets two high-traffic classifiers** (the design makes adding a third cheap):
|
|
23
|
+
|
|
24
|
+
1. **`soleur:go` routing accuracy** — does the routing table produce the correct route token?
|
|
25
|
+
2. **soleur:support:ticket-triage P-level accuracy** — does the priority rubric produce the correct P1/P2/P3?
|
|
26
|
+
|
|
27
|
+
**Grok Build arm (Phase C #6323):** The harness now covers Grok slash-command + `spawn_subagent` semantics for `soleur:go` routes (in addition to Claude Skill/Task). Golden assertions and regression tests exercise the adapter contract from `lib/harness.ts` (detect via GROK_* markers or argv). The go-routing target in `gated-skills.json` + eval-gate block in `go.md` are the source; projections feed the skill arm for both harnesses. See plan 2026-07-11-feat-grok-phase-c-go-md-eval-harness-plan.md and self-ref in `go.md`.
|
|
28
|
+
|
|
29
|
+
<decision_gate>
|
|
30
|
+
**API budget.** Each `npx promptfoo eval --repeat 3` run calls the Anthropic API against the key in
|
|
31
|
+
your session — 2 arms × 3 models × the target's golden tasks × 3 repeats. At the current task counts
|
|
32
|
+
that is ≈ **144 API calls** for go-routing (8 tasks) and ≈ **108** for soleur:support:ticket-triage (6 tasks), so
|
|
33
|
+
≈ **230 to run both**. Cost scales with the model mix (one arm runs Opus), the task count, and the
|
|
34
|
+
`--repeat` value (outputs are single tokens, so per-call cost is small — the first full run was well
|
|
35
|
+
under $1). This harness is **opt-in and manual** — it is deliberately NOT wired into per-PR CI (that
|
|
36
|
+
cost decision is separate and later). Soleur does not bill or proxy these calls — Anthropic does,
|
|
37
|
+
against your key. The Soleur LICENSE (BSL 1.1) disclaims warranty for runtime cost; you operate this
|
|
38
|
+
harness against your own budget. To inspect the config without spending, use
|
|
39
|
+
`npx promptfoo validate config` (no API calls).
|
|
40
|
+
</decision_gate>
|
|
41
|
+
|
|
42
|
+
**Pipeline tally (#9403).** `bash "${CLAUDE_PLUGIN_ROOT}/scripts/pipeline-tally.sh" init` first. Before each `npx promptfoo eval` arm: `bash "${CLAUDE_PLUGIN_ROOT}/scripts/pipeline-tally.sh" gate agent_rounds` — `STOP` → write `knowledge-base/project/specs/<feature>/session-state.md` (`status: budget-capped` + `budget-capped: agent_rounds=<count>/<cap>` + resume) and stop cleanly; `WARN`/`UNKNOWN` → continue. `bash "${CLAUDE_PLUGIN_ROOT}/scripts/pipeline-tally.sh" incr agent_rounds` once per eval arm dispatched.
|
|
43
|
+
|
|
44
|
+
## How it works (the four ponytail patterns)
|
|
45
|
+
|
|
46
|
+
1. **promptfoo-driven grid** — arms × models × tasks, N runs. One config file per target:
|
|
47
|
+
[promptfooconfig-go-routing.yaml](./promptfooconfig-go-routing.yaml) and
|
|
48
|
+
[promptfooconfig-ticket-triage.yaml](./promptfooconfig-ticket-triage.yaml).
|
|
49
|
+
2. **MEASUREMENT assert** (always passes, records a number) —
|
|
50
|
+
[measure-classification.cjs](./scripts/measure-classification.cjs) records the
|
|
51
|
+
classification-correct rate (1.0 if the emitted label matches the golden label, else 0.0). The
|
|
52
|
+
ponytail `loc.js` analog.
|
|
53
|
+
3. **GATE assert** (fails on wrong output) —
|
|
54
|
+
[gate-classification.cjs](./scripts/gate-classification.cjs) fails when the emitted label is not
|
|
55
|
+
a member of the target's closed enum ([go-routes.json](./enums/go-routes.json),
|
|
56
|
+
[triage-levels.json](./enums/triage-levels.json)). The ponytail `correctness.js` analog.
|
|
57
|
+
4. **BASELINE / CONTROL arm** — the baseline prompt
|
|
58
|
+
([go-baseline.txt](./prompts/go-baseline.txt),
|
|
59
|
+
[triage-baseline.txt](./prompts/triage-baseline.txt)) knows only the label set, not the
|
|
60
|
+
classifier rules; the skill prompt ([go-skill.txt](./prompts/go-skill.txt),
|
|
61
|
+
[triage-skill.txt](./prompts/triage-skill.txt)) embeds the production classifier prose. The
|
|
62
|
+
delta between the two arms is the evidence the rules *produce* the behavior — "that delta is the
|
|
63
|
+
point."
|
|
64
|
+
|
|
65
|
+
Both asserts share one parser, [parse-label.cjs](./scripts/parse-label.cjs). Golden tasks are
|
|
66
|
+
synthesized fixtures only (no real user data): [go-routing.jsonl](./tasks/go-routing.jsonl),
|
|
67
|
+
[tasks/ticket-triage.jsonl](./tasks/ticket-triage.jsonl).
|
|
68
|
+
|
|
69
|
+
**Skill-arm prompts are generated projections (no hand-copy).** The skill-arm prompts
|
|
70
|
+
(`prompts/go-skill.txt`, `prompts/triage-skill.txt`) are a **mechanical projection** of the
|
|
71
|
+
production classifier block, not a hand-distilled paraphrase. Each gated source wraps its rules in
|
|
72
|
+
HTML-comment sentinels — the `soleur:go` routing table in `plugins/soleur/commands/go.md`
|
|
73
|
+
(`<!-- eval-gate:block:go-routing:start -->` … `:end`) and the soleur:support:ticket-triage priority rubric in
|
|
74
|
+
`plugins/soleur/agents/support/ticket-triage.md` (`eval-gate:block:ticket-triage`). The block is the
|
|
75
|
+
single source of truth; [scripts/extract-block.cjs](./scripts/extract-block.cjs) projects it and
|
|
76
|
+
[scripts/gen-skill-prompt.cjs](./scripts/gen-skill-prompt.cjs) wraps it into the skill-arm prompt.
|
|
77
|
+
**Regenerate on any source-block edit** (`node scripts/gen-skill-prompt.cjs --all`); the AC4
|
|
78
|
+
round-trip test ([test/extract-block.test.sh](./test/extract-block.test.sh)) asserts the committed
|
|
79
|
+
projection equals the freshly generated one byte-for-byte, so a stale projection fails CI rather than
|
|
80
|
+
silently measuring an out-of-date classifier.
|
|
81
|
+
|
|
82
|
+
## Gate mode — validation-gated classifier-skill edits
|
|
83
|
+
|
|
84
|
+
Beyond measuring a delta, the harness gates *edits* to a classifier block: an edit must not regress
|
|
85
|
+
the corpus AND must make its targeted case pass before it is applied
|
|
86
|
+
([scripts/eval-gate.cjs](./scripts/eval-gate.cjs), proposer-agnostic — heal-skill, compound, or a
|
|
87
|
+
manual edit). The registry [gated-skills.json](./gated-skills.json) lists each gated block:
|
|
88
|
+
`{ source_file, block_id, block_start_marker, block_end_marker, target, projected_prompt_path }`.
|
|
89
|
+
|
|
90
|
+
- **`--check <file>`** — print `{gated, target, block_id}` for whether a file is a gated source
|
|
91
|
+
(lookup-only, no API). A proposer runs this first; a non-gated edit proceeds unchanged.
|
|
92
|
+
- **`--dry-run --target <id>`** — print the **skill-arm-only** API-call estimate
|
|
93
|
+
(`2 (current+candidate) × models × (corpus+1) × repeat`; the baseline control arm is skipped) and
|
|
94
|
+
exit without spending.
|
|
95
|
+
- **Real run** (`--target <id> --candidate-file <edited-source> --target-task <json|path>
|
|
96
|
+
[--repeat N] [--append-on-accept]`) — extract the current block (source on disk) and candidate
|
|
97
|
+
block (edited file); if they are identical it prints `{accept:true, reason:"no gated-block
|
|
98
|
+
change"}` (the ungateable no-op). Otherwise it projects both into skill-arm prompts, runs promptfoo
|
|
99
|
+
skill-arm-only for each with `--output`, normalizes the JSON, and calls the **pure**
|
|
100
|
+
[computeVerdict()](./scripts/verdict.cjs). On accept with `--append-on-accept`, the synthesized
|
|
101
|
+
target task is appended to `tasks/<target>.jsonl` (real-data-shaped input is rejected per
|
|
102
|
+
`cq-test-fixtures-synthesized-only`).
|
|
103
|
+
|
|
104
|
+
The verdict math is pure and unit-tested with zero API
|
|
105
|
+
([test/verdict.test.sh](./test/verdict.test.sh)): `corpus_regressed = candidate_rate < current_rate
|
|
106
|
+
− epsilon` (ε = one-task-equivalent; boundary equality is NOT a regression), `target_task_passes =
|
|
107
|
+
pooled candidate target rate ≥ 0.5`, `accept = !corpus_regressed && target_task_passes`. **Fail-closed:**
|
|
108
|
+
any gate error (missing key, promptfoo non-zero, malformed task) exits non-zero and defaults to NOT
|
|
109
|
+
accept. The gate is only honest while the skill-arm prompt is a mechanical projection of the block
|
|
110
|
+
(see ADR-069) — if the projection link is broken the gate silently no-ops on out-of-block edits.
|
|
111
|
+
|
|
112
|
+
## Run it
|
|
113
|
+
|
|
114
|
+
See [README.md](./README.md) for the reproduce commands, how to read the baseline-vs-skill delta,
|
|
115
|
+
and the additive recipe for adding a new target. In short:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
cd plugins/soleur/skills/eval-harness
|
|
119
|
+
bash scripts/gen-models.sh # refresh model IDs from the registry
|
|
120
|
+
npx promptfoo eval -c promptfooconfig-go-routing.yaml --repeat 3 # ~144 API calls (8 tasks)
|
|
121
|
+
npx promptfoo eval -c promptfooconfig-ticket-triage.yaml --repeat 3 # ~108 API calls (6 tasks)
|
|
122
|
+
npx promptfoo eval -c promptfooconfig-tool-selection.yaml --repeat 5 # ~450 API calls (15 tasks) — manual only
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**`tool-selection`** is a **manual measurement-only** target (#5768 AC(c)): it
|
|
126
|
+
measures whether the L3 phase-scoped surface (the hint
|
|
127
|
+
`.claude/hooks/phase-surface-hint.sh` injects) lets the model pick the correct
|
|
128
|
+
next skill more often than the full-surface baseline. The mean of the MEASUREMENT
|
|
129
|
+
score across the two arms IS the before/after uplift. Unlike the **target keys** behind
|
|
130
|
+
[promptfooconfig-go-routing.yaml](./promptfooconfig-go-routing.yaml) and
|
|
131
|
+
[promptfooconfig-ticket-triage.yaml](./promptfooconfig-ticket-triage.yaml) it is **not** in
|
|
132
|
+
[gated-skills.json](./gated-skills.json) — there
|
|
133
|
+
is no prose block to project (the surface lives in `phase-surface-map.json`, not a
|
|
134
|
+
SKILL.md `eval-gate` block), so it never runs as a per-PR projection round-trip;
|
|
135
|
+
run it by hand when you want the AC(c) number.
|
|
136
|
+
|
|
137
|
+
`--repeat 3` runs each cell 3× so the rate can be a median over runs — a config-level `repeat:` key
|
|
138
|
+
is NOT honored by promptfoo, so the flag is required.
|
|
139
|
+
|
|
140
|
+
Model IDs are single-sourced via [gen-models.sh](./scripts/gen-models.sh), which reads the three
|
|
141
|
+
current IDs from the TypeScript registry into `models.generated.json` — no model literal is
|
|
142
|
+
hardcoded in any config-class file.
|
|
143
|
+
|
|
144
|
+
## Tests
|
|
145
|
+
|
|
146
|
+
Deterministic, no live LLM / no API (stubbed model outputs, recorded result fixtures):
|
|
147
|
+
[gen-models.test.sh](./test/gen-models.test.sh),
|
|
148
|
+
[measure-classification.test.sh](./test/measure-classification.test.sh),
|
|
149
|
+
[gate-classification.test.sh](./test/gate-classification.test.sh),
|
|
150
|
+
[extract-block.test.sh](./test/extract-block.test.sh) (block extraction + AC4 round-trip,
|
|
151
|
+
registry-driven target loop),
|
|
152
|
+
[verdict.test.sh](./test/verdict.test.sh) (pure `computeVerdict` — accept / corpus-regress /
|
|
153
|
+
target-fail / ε-boundary), [eval-gate.test.sh](./test/eval-gate.test.sh) (`--check`, `--dry-run`,
|
|
154
|
+
no-op — no API), and
|
|
155
|
+
[registry-completeness.test.sh](./test/registry-completeness.test.sh) (bidirectional parity
|
|
156
|
+
between `eval-gate:block` source markers and `gated-skills.json` `block_id`s — DEDUP +
|
|
157
|
+
set-equality + charset guard). They run under the standard `bash scripts/test-all.sh` discovery.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
[
|
|
2
|
+
"brainstorm",
|
|
3
|
+
"brainstorm-techniques",
|
|
4
|
+
"plan",
|
|
5
|
+
"deepen-plan",
|
|
6
|
+
"plan-review",
|
|
7
|
+
"spec-templates",
|
|
8
|
+
"work",
|
|
9
|
+
"atdd-developer",
|
|
10
|
+
"test-fix-loop",
|
|
11
|
+
"resolve-todo-parallel",
|
|
12
|
+
"qa",
|
|
13
|
+
"review",
|
|
14
|
+
"resolve-pr-parallel",
|
|
15
|
+
"ship",
|
|
16
|
+
"preflight",
|
|
17
|
+
"merge-pr",
|
|
18
|
+
"postmerge",
|
|
19
|
+
"changelog"
|
|
20
|
+
]
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"source_file": "plugins/soleur/commands/go.md",
|
|
4
|
+
"block_id": "go-routing",
|
|
5
|
+
"block_start_marker": "<!-- eval-gate:block:go-routing:start -->",
|
|
6
|
+
"block_end_marker": "<!-- eval-gate:block:go-routing:end -->",
|
|
7
|
+
"target": "go-routing",
|
|
8
|
+
"projected_prompt_path": "plugins/soleur/skills/eval-harness/prompts/go-skill.txt"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"source_file": "plugins/soleur/agents/support/ticket-triage.md",
|
|
12
|
+
"block_id": "ticket-triage",
|
|
13
|
+
"block_start_marker": "<!-- eval-gate:block:ticket-triage:start -->",
|
|
14
|
+
"block_end_marker": "<!-- eval-gate:block:ticket-triage:end -->",
|
|
15
|
+
"target": "ticket-triage",
|
|
16
|
+
"projected_prompt_path": "plugins/soleur/skills/eval-harness/prompts/triage-skill.txt"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"source_file": "plugins/soleur/skills/brainstorm/references/brainstorm-domain-config.md",
|
|
20
|
+
"block_id": "lane-inference",
|
|
21
|
+
"block_start_marker": "<!-- eval-gate:block:lane-inference:start -->",
|
|
22
|
+
"block_end_marker": "<!-- eval-gate:block:lane-inference:end -->",
|
|
23
|
+
"target": "lane-inference",
|
|
24
|
+
"projected_prompt_path": "plugins/soleur/skills/eval-harness/prompts/lane-inference-skill.txt"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"source_file": "plugins/soleur/skills/incident/SKILL.md",
|
|
28
|
+
"block_id": "incident-threshold",
|
|
29
|
+
"block_start_marker": "<!-- eval-gate:block:incident-threshold:start -->",
|
|
30
|
+
"block_end_marker": "<!-- eval-gate:block:incident-threshold:end -->",
|
|
31
|
+
"target": "incident-threshold",
|
|
32
|
+
"projected_prompt_path": "plugins/soleur/skills/eval-harness/prompts/incident-threshold-skill.txt"
|
|
33
|
+
}
|
|
34
|
+
]
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# yaml-language-server: $schema=https://promptfoo.dev/config-schema.json
|
|
2
|
+
description: "soleur:go routing accuracy — skill arm (routing table) vs baseline (no table). Grok arm (Phase C #6323): asserts /go slash + spawn_subagent paths via harness adapter (see SKILL.md + go.md self-ref)."
|
|
3
|
+
|
|
4
|
+
# Model IDs are single-sourced. Run `bash scripts/gen-models.sh` to (re)generate
|
|
5
|
+
# models.generated.json from the TS registry; no model literal is hardcoded here,
|
|
6
|
+
# which keeps this config off the model-launch-review auto-fixer and stale-proof.
|
|
7
|
+
providers: file://models.generated.json
|
|
8
|
+
|
|
9
|
+
# Two arms become two grid columns. The skill arm embeds the /go routing table;
|
|
10
|
+
# the baseline arm knows only the route token set (the control — "that delta is the point").
|
|
11
|
+
prompts:
|
|
12
|
+
- file://prompts/go-skill.txt
|
|
13
|
+
- file://prompts/go-baseline.txt
|
|
14
|
+
|
|
15
|
+
defaultTest:
|
|
16
|
+
vars:
|
|
17
|
+
# Closed 7-route enum (single source). promptfoo passes this file:// ref to the
|
|
18
|
+
# custom asserts VERBATIM (it does not resolve defaultTest.vars file:// refs), so
|
|
19
|
+
# the asserts read the file themselves via loadEnum() in scripts/parse-label.cjs.
|
|
20
|
+
enum: file://enums/go-routes.json
|
|
21
|
+
assert:
|
|
22
|
+
# MEASUREMENT: always passes, records routing-correct rate (1.0 / 0.0).
|
|
23
|
+
- type: javascript
|
|
24
|
+
value: file://scripts/measure-classification.cjs
|
|
25
|
+
# GATE: fails if the emitted label is not a member of the enum.
|
|
26
|
+
- type: javascript
|
|
27
|
+
value: file://scripts/gate-classification.cjs
|
|
28
|
+
|
|
29
|
+
# N runs per cell come from the `--repeat N` CLI flag (a config-level `repeat:` key
|
|
30
|
+
# is NOT honored by promptfoo). The classification-correct rate is the mean of the
|
|
31
|
+
# measurement assert's per-run scores; promptfoo has no native median, so read the
|
|
32
|
+
# aggregate per-cell score or compute the median across the --repeat runs. See README.
|
|
33
|
+
#
|
|
34
|
+
# Golden tasks: { vars: { input, golden_label } } per line.
|
|
35
|
+
tests: file://tasks/go-routing.jsonl
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# yaml-language-server: $schema=https://promptfoo.dev/config-schema.json
|
|
2
|
+
description: "incident brand_survival_threshold accuracy — skill arm (Phase 1 criteria) vs baseline (label set only)"
|
|
3
|
+
|
|
4
|
+
# Model IDs are single-sourced. Run `bash scripts/gen-models.sh` to (re)generate
|
|
5
|
+
# models.generated.json from the TS registry; no model literal is hardcoded here.
|
|
6
|
+
providers: file://models.generated.json
|
|
7
|
+
|
|
8
|
+
# Two arms become two grid columns. The skill arm embeds the incident §Phase 1 criteria;
|
|
9
|
+
# the baseline arm knows only the threshold token set (the control — "that delta is the point").
|
|
10
|
+
prompts:
|
|
11
|
+
- file://prompts/incident-threshold-skill.txt
|
|
12
|
+
- file://prompts/incident-threshold-baseline.txt
|
|
13
|
+
|
|
14
|
+
defaultTest:
|
|
15
|
+
vars:
|
|
16
|
+
# Closed 3-value enum (single source). promptfoo passes this file:// ref to the
|
|
17
|
+
# custom asserts VERBATIM; the asserts read the file themselves via loadEnum().
|
|
18
|
+
enum: file://enums/incident-threshold.json
|
|
19
|
+
assert:
|
|
20
|
+
# MEASUREMENT: always passes, records threshold-correct rate (1.0 / 0.0).
|
|
21
|
+
- type: javascript
|
|
22
|
+
value: file://scripts/measure-classification.cjs
|
|
23
|
+
# GATE: fails if the emitted label is not a member of the enum.
|
|
24
|
+
- type: javascript
|
|
25
|
+
value: file://scripts/gate-classification.cjs
|
|
26
|
+
|
|
27
|
+
# N runs per cell come from the `--repeat N` CLI flag. Unlike lane-inference, the incident
|
|
28
|
+
# threshold is a genuine LLM-applied prose rubric, so a meaningful skill-vs-baseline delta
|
|
29
|
+
# is expected.
|
|
30
|
+
#
|
|
31
|
+
# Golden tasks: { vars: { input, golden_label } } per line.
|
|
32
|
+
tests: file://tasks/incident-threshold.jsonl
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# yaml-language-server: $schema=https://promptfoo.dev/config-schema.json
|
|
2
|
+
description: "brainstorm lane-inference accuracy — skill arm (lane rule) vs baseline (label set only)"
|
|
3
|
+
|
|
4
|
+
# Model IDs are single-sourced. Run `bash scripts/gen-models.sh` to (re)generate
|
|
5
|
+
# models.generated.json from the TS registry; no model literal is hardcoded here.
|
|
6
|
+
providers: file://models.generated.json
|
|
7
|
+
|
|
8
|
+
# Two arms become two grid columns. The skill arm embeds the §Lane Inference rule;
|
|
9
|
+
# the baseline arm knows only the lane token set (the control — "that delta is the point").
|
|
10
|
+
prompts:
|
|
11
|
+
- file://prompts/lane-inference-skill.txt
|
|
12
|
+
- file://prompts/lane-inference-baseline.txt
|
|
13
|
+
|
|
14
|
+
defaultTest:
|
|
15
|
+
vars:
|
|
16
|
+
# Closed 3-lane enum (single source). promptfoo passes this file:// ref to the
|
|
17
|
+
# custom asserts VERBATIM; the asserts read the file themselves via loadEnum().
|
|
18
|
+
enum: file://enums/lane.json
|
|
19
|
+
assert:
|
|
20
|
+
# MEASUREMENT: always passes, records lane-correct rate (1.0 / 0.0).
|
|
21
|
+
- type: javascript
|
|
22
|
+
value: file://scripts/measure-classification.cjs
|
|
23
|
+
# GATE: fails if the emitted label is not a member of the enum.
|
|
24
|
+
- type: javascript
|
|
25
|
+
value: file://scripts/gate-classification.cjs
|
|
26
|
+
|
|
27
|
+
# N runs per cell come from the `--repeat N` CLI flag. lane-inference is a deterministic
|
|
28
|
+
# keyword scan, so the skill-vs-baseline delta is expected to be MUTED — the harness value
|
|
29
|
+
# here is regression detection (an edit to the lane table must not drop a passing task), not
|
|
30
|
+
# arm uplift. See README.
|
|
31
|
+
#
|
|
32
|
+
# Golden tasks: { vars: { input, golden_label } } per line.
|
|
33
|
+
tests: file://tasks/lane-inference.jsonl
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# yaml-language-server: $schema=https://promptfoo.dev/config-schema.json
|
|
2
|
+
description: "ticket-triage P-level accuracy — skill arm (priority rubric) vs baseline (no rubric)"
|
|
3
|
+
|
|
4
|
+
# Model IDs are single-sourced — shared with the go-routing config. Run
|
|
5
|
+
# `bash scripts/gen-models.sh` to (re)generate models.generated.json from the TS registry.
|
|
6
|
+
providers: file://models.generated.json
|
|
7
|
+
|
|
8
|
+
# Two arms become two grid columns. The skill arm embeds the P-level priority rubric;
|
|
9
|
+
# the baseline arm knows only the P1/P2/P3 token set (the control).
|
|
10
|
+
prompts:
|
|
11
|
+
- file://prompts/triage-skill.txt
|
|
12
|
+
- file://prompts/triage-baseline.txt
|
|
13
|
+
|
|
14
|
+
defaultTest:
|
|
15
|
+
vars:
|
|
16
|
+
# Closed P1/P2/P3 enum (single source). promptfoo passes this file:// ref to the
|
|
17
|
+
# custom asserts VERBATIM (it does not resolve defaultTest.vars file:// refs), so
|
|
18
|
+
# the asserts read the file themselves via loadEnum() in scripts/parse-label.cjs.
|
|
19
|
+
enum: file://enums/triage-levels.json
|
|
20
|
+
assert:
|
|
21
|
+
# MEASUREMENT: always passes, records P-level-correct rate (1.0 / 0.0).
|
|
22
|
+
- type: javascript
|
|
23
|
+
value: file://scripts/measure-classification.cjs
|
|
24
|
+
# GATE: fails if the emitted label is not a member of the enum.
|
|
25
|
+
- type: javascript
|
|
26
|
+
value: file://scripts/gate-classification.cjs
|
|
27
|
+
|
|
28
|
+
# N runs per cell come from the `--repeat N` CLI flag (a config-level `repeat:` key
|
|
29
|
+
# is NOT honored by promptfoo). The classification-correct rate is the mean of the
|
|
30
|
+
# measurement assert's per-run scores; promptfoo has no native median, so read the
|
|
31
|
+
# aggregate per-cell score or compute the median across the --repeat runs. See README.
|
|
32
|
+
#
|
|
33
|
+
# Golden tasks: { vars: { input, golden_label } } per line.
|
|
34
|
+
tests: file://tasks/ticket-triage.jsonl
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# yaml-language-server: $schema=https://promptfoo.dev/config-schema.json
|
|
2
|
+
description: "L3 phase-scoped tool/skill selection accuracy — phase-scoped arm (hint surface) vs full-surface baseline (#5768 AC(c))"
|
|
3
|
+
|
|
4
|
+
# Model IDs are single-sourced. Run `bash scripts/gen-models.sh` to (re)generate
|
|
5
|
+
# models.generated.json from the TS registry; no model literal is hardcoded here.
|
|
6
|
+
providers: file://models.generated.json
|
|
7
|
+
|
|
8
|
+
# Two arms become two grid columns. The skill arm foregrounds the current phase's
|
|
9
|
+
# surface (the same hint phase-surface-hint.sh injects); the baseline arm shows the
|
|
10
|
+
# full flat skill catalog with no phase scoping — that delta is the point.
|
|
11
|
+
prompts:
|
|
12
|
+
- file://prompts/tool-selection-skill.txt
|
|
13
|
+
- file://prompts/tool-selection-baseline.txt
|
|
14
|
+
|
|
15
|
+
defaultTest:
|
|
16
|
+
vars:
|
|
17
|
+
# Closed skill-label enum (single source). promptfoo passes this file:// ref to
|
|
18
|
+
# the custom asserts VERBATIM; the asserts read the file themselves via loadEnum().
|
|
19
|
+
enum: file://enums/tool-selection.json
|
|
20
|
+
assert:
|
|
21
|
+
# MEASUREMENT: always passes, records next-skill-correct rate (1.0 / 0.0).
|
|
22
|
+
# Aggregated across --repeat N and across arms, the mean IS the
|
|
23
|
+
# phase-scoped-vs-full-surface uplift (the AC(c) before/after number).
|
|
24
|
+
- type: javascript
|
|
25
|
+
value: file://scripts/measure-classification.cjs
|
|
26
|
+
# GATE: fails if the emitted label is not a member of the enum.
|
|
27
|
+
- type: javascript
|
|
28
|
+
value: file://scripts/gate-classification.cjs
|
|
29
|
+
|
|
30
|
+
# Opt-in/manual only (API spend; NOT CI-wired — see SKILL.md API-budget gate).
|
|
31
|
+
# Run: promptfoo eval -c promptfooconfig-tool-selection.yaml --repeat 5
|
|
32
|
+
# Golden tasks: { vars: { phase, input, golden_label } } per line.
|
|
33
|
+
tests: file://tasks/tool-selection.jsonl
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
You are a request router. Classify the user's request into EXACTLY ONE route token from this set: fix, drain, clo-attestation, review, legal-threshold, incident, default.
|
|
2
|
+
|
|
3
|
+
Respond with ONLY the single route token. No explanation, no punctuation, no extra words.
|
|
4
|
+
|
|
5
|
+
User request: {{input}}
|
|
6
|
+
Route:
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
You are the Soleur /go router. Classify the user's request into EXACTLY ONE route token using this routing table.
|
|
2
|
+
|
|
3
|
+
Routing table:
|
|
4
|
+
| Intent | Trigger Signals | Routes To |
|
|
5
|
+
|--------|----------------|-----------|
|
|
6
|
+
| fix | The user describes broken behavior, errors, regressions, or something that needs fixing | `soleur:one-shot` |
|
|
7
|
+
| drain | "fix all issues labeled X", "drain the Y backlog", "close all label:Z", "clean up the X backlog" | `soleur:drain-labeled-backlog` |
|
|
8
|
+
| drain-prs | "drain the open PRs", "review and merge all open PRs", "merge all the green PRs", "clear the PR queue/backlog", "triage open pull requests" — draining open PULL REQUESTS (not labeled issues, which is the `drain` row above; not a single named PR, which is the `review` row below) | `soleur:drain-prs` |
|
|
9
|
+
| clo-attestation | The user input is `#N` (or a bare number) AND `gh issue view N` returns a body containing `clo_routable: true` OR matches ALL of: `type:\s*manual`, `manual_because:\s*subjective-design-call`, AND at least one external legal-source signal (`eur-lex\.europa\.eu`, `leginfo\.legislature\.ca\.gov`, `congress\.gov`, `federalregister\.gov`, `legislation\.gov\.uk`, `laws-lois\.justice\.gc\.ca`, OR a `Art\.\s*[0-9]+` / `§\s*[0-9]+` statute citation in the body). Must fire BEFORE the `review` row. | `soleur:legal:clo` agent (Task spawn; the agent's prompt receives the full issue body + the verification question(s) extracted from the body) |
|
|
10
|
+
| review | "review PR", "check this code", PR number reference (when `#N` resolves via `gh pr view N` — confirm PR-vs-issue type before routing) | `soleur:review` |
|
|
11
|
+
| legal-threshold | The user input mentions an inbound vendor MSA, DSAR (data subject access request) / right-to-be-forgotten / data deletion request / account deletion request / data export request / "what data do you have on me", AI vendor terms / vendor AI review, OSS license question (GPL/AGPL/SSPL/copyleft), OR a personal-data exposure / unauthorized access / PII leak that crosses a statutory clock (GDPR Art. 33 72h) — events that exceed founder-grade compliance helping and warrant a downstream specialist | `soleur:legal:clo` agent (Task spawn; the Assess phase emits the threshold catalog from `knowledge-base/legal/recommended-tools.md`) |
|
|
12
|
+
| incident | The user describes a live or recent production incident (outage, customer-impact, Sentry alert) needing classification + PIR. NOTE: pure data breaches without an operational outage route to `legal-threshold` above (statutory clock takes precedence); use `incident` for ops-postmortem scope (uptime, latency, error-rate). | `soleur:incident` |
|
|
13
|
+
| implement | User asks to **implement**, **build**, or **ship** a scoped feature, issue, or phase (e.g. "implement Phase F", "#6325 implement", "ship this feature") — concrete deliverables, not open-ended exploration | `soleur:one-shot` |
|
|
14
|
+
| questionnaire | The user needs an ANSWER THEY DO NOT HOLD from a NAMED THIRD PARTY outside the company — an accountant, bookkeeper, lawyer, notary, auditor, insurer, bank, regulator, landlord, or a vendor — and the deliverable is a document to send them ("ask my accountant", "draft questions for the lawyer", "what do I need from the insurer", "I need to email our bookkeeper about"). The tell is a recipient plus a decision the founder is blocked on; a question the founder can answer, or one about this codebase, is NOT this row — those are `default` and `fix` respectively. Also reached without routing when `.claude/hooks/pre-ask-technical-fork-gate.sh` denies an external-expert `AskUserQuestion` | `soleur:questionnaire-generate` |
|
|
15
|
+
| glossary | The user asks what a term MEANS inside this repository, reports that two agents or documents use one word for different things, or asks to record or sharpen the definition of a project term ("what do we mean by lane", "shard and shard mean two different things here", "write down what a rung is"). Scoped to the repository's own vocabulary — a question about a third-party product's terminology is `default` | `soleur:kb-glossary` |
|
|
16
|
+
| default | Everything else — features, exploration, questions, generation, vague scope without implement/build/ship intent | `soleur:brainstorm` |
|
|
17
|
+
|
|
18
|
+
Respond with ONLY the single route token (one of: fix, drain, drain-prs, clo-attestation, review, legal-threshold, incident, implement, questionnaire, glossary, default). No explanation, no punctuation, no extra words.
|
|
19
|
+
|
|
20
|
+
User request: {{input}}
|
|
21
|
+
Route:
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
You are an incident brand-survival classifier. Classify the incident description into EXACTLY ONE threshold from this set: none, single-user incident, aggregate pattern.
|
|
2
|
+
|
|
3
|
+
Respond with ONLY the single threshold value. No explanation, no extra words.
|
|
4
|
+
|
|
5
|
+
Incident: {{input}}
|
|
6
|
+
Threshold:
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
You are the Soleur incident brand-survival classifier. Assign a threshold to the incident description using this rubric.
|
|
2
|
+
|
|
3
|
+
Classification rubric:
|
|
4
|
+
- **none** — no user-facing artifact, no credential surface, no billing path; internal tooling / docs / CI.
|
|
5
|
+
- **single-user incident** — at least one real user impacted (data loss, trust breach, credential exposure, billing surprise) OR any sensitive-data surface is at risk.
|
|
6
|
+
- **aggregate pattern** — repeated or systemic impact across multiple users or tenants; brand-survival-level severity.
|
|
7
|
+
|
|
8
|
+
Respond with ONLY the single threshold value (exactly one of: none, single-user incident, aggregate pattern). No explanation, no extra words.
|
|
9
|
+
|
|
10
|
+
Incident:
|
|
11
|
+
{{input}}
|
|
12
|
+
Threshold:
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
You are a brainstorm lane classifier. Classify the feature description into EXACTLY ONE lane token from this set: procedural, single-domain, cross-domain.
|
|
2
|
+
|
|
3
|
+
Respond with ONLY the single lane token. No explanation, no punctuation, no extra words.
|
|
4
|
+
|
|
5
|
+
Feature description: {{input}}
|
|
6
|
+
Lane:
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
You are the Soleur brainstorm lane classifier. Classify the feature description into EXACTLY ONE lane using this rule.
|
|
2
|
+
|
|
3
|
+
Lane inference rule:
|
|
4
|
+
| Lane | Phase 0.5 effect | Triggers (case-insensitive token scan) |
|
|
5
|
+
|---|---|---|
|
|
6
|
+
| `single-domain` | Spawn one leader (highest-relevance per Assessment Questions). On tie, fall back to **config declaration order** in this file's domain table (first match wins). | No `cross-domain` trigger AND no `procedural` trigger. |
|
|
7
|
+
| `cross-domain` | Spawn ≥2 leaders in parallel. If fewer than 2 match Assessment Questions, **fail-closed expand**: add the next-highest-relevance domain not yet in the set; tie-break by config declaration order. | `audit`, `review`, `security`, `compliance`, `migration`, `data`, `infra`, `regulated`, `payment`, `auth`, `cross-tenant`, `billing`, `gdpr`, `privacy`. |
|
|
8
|
+
| `procedural` | Spawn zero leaders. | `scaffold`, `lockfile`, `format-only`, `rename-only`, `dep-bump`, `version-bump`, `lint-fix` AND no `cross-domain` trigger. |
|
|
9
|
+
|
|
10
|
+
**Fail-closed default** when keyword inference returns no signal AND operator selects nothing resolvable: `cross-domain`. Cost asymmetry — false-positive fan-out is recoverable; missed user-impact gate is shipped breach.
|
|
11
|
+
|
|
12
|
+
Respond with ONLY the single lane token (one of: procedural, single-domain, cross-domain). No explanation, no punctuation, no extra words.
|
|
13
|
+
|
|
14
|
+
Feature description: {{input}}
|
|
15
|
+
Lane:
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
You are the Soleur workflow agent, mid-task. The full skill catalog is available
|
|
2
|
+
(no phase scoping):
|
|
3
|
+
|
|
4
|
+
brainstorm, brainstorm-techniques, plan, deepen-plan, plan-review, spec-templates,
|
|
5
|
+
work, atdd-developer, test-fix-loop, resolve-todo-parallel, resolve-pr-parallel,
|
|
6
|
+
review, qa, compound, ship, preflight, merge-pr, postmerge, changelog,
|
|
7
|
+
release-announce, deploy, deploy-docs, archive-kb, kb-search, ship, incident,
|
|
8
|
+
reproduce-bug, harvest-debt, resolve-debt, growth, seo-aeo, content-writer,
|
|
9
|
+
competitive-analysis, frontend-design, ux-audit, gdpr-gate, legal-audit,
|
|
10
|
+
legal-generate, schedule.
|
|
11
|
+
|
|
12
|
+
Given the situation below, which ONE skill should fire next? Respond with ONLY
|
|
13
|
+
the single skill token (one of: brainstorm, brainstorm-techniques, plan,
|
|
14
|
+
deepen-plan, plan-review, spec-templates, work, atdd-developer, test-fix-loop,
|
|
15
|
+
resolve-todo-parallel, qa, review, resolve-pr-parallel, ship, preflight,
|
|
16
|
+
merge-pr, postmerge, changelog). No explanation, no punctuation, no extra words.
|
|
17
|
+
|
|
18
|
+
Situation: {{input}}
|
|
19
|
+
Next skill:
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
You are the Soleur workflow agent, mid-task. You are in the {{phase}} phase.
|
|
2
|
+
|
|
3
|
+
This is the L3 phase-scoped surface for your CURRENT phase (the same hint
|
|
4
|
+
.claude/hooks/phase-surface-hint.sh injects from .claude/phase-surface-map.json).
|
|
5
|
+
Foreground these; later-phase skills are not yet relevant.
|
|
6
|
+
|
|
7
|
+
Phase-relevant skills by phase:
|
|
8
|
+
- brainstorm: brainstorm, brainstorm-techniques → next step is usually `plan`
|
|
9
|
+
- plan: plan, deepen-plan, plan-review, spec-templates → next step is usually `work`
|
|
10
|
+
- work: work, atdd-developer, test-fix-loop, resolve-todo-parallel, qa → next step is usually `review`
|
|
11
|
+
- review: review, qa, resolve-pr-parallel → next step is usually `ship`
|
|
12
|
+
- ship: ship, preflight, merge-pr, postmerge, changelog (terminal)
|
|
13
|
+
|
|
14
|
+
Given your current phase and the situation below, which ONE skill should fire
|
|
15
|
+
next? Respond with ONLY the single skill token (one of: brainstorm,
|
|
16
|
+
brainstorm-techniques, plan, deepen-plan, plan-review, spec-templates, work,
|
|
17
|
+
atdd-developer, test-fix-loop, resolve-todo-parallel, qa, review,
|
|
18
|
+
resolve-pr-parallel, ship, preflight, merge-pr, postmerge, changelog). No
|
|
19
|
+
explanation, no punctuation, no extra words.
|
|
20
|
+
|
|
21
|
+
Situation: {{input}}
|
|
22
|
+
Next skill:
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
You are the Soleur ticket-triage classifier. Assign a priority level to the GitHub issue using this rubric.
|
|
2
|
+
|
|
3
|
+
Priority rubric:
|
|
4
|
+
- **Severity assignment:** Assign P1 (critical -- blocking, data loss, security), P2 (important -- degraded functionality, workaround exists), P3 (nice-to-have -- cosmetic, enhancement).
|
|
5
|
+
|
|
6
|
+
Respond with ONLY the single priority token (one of: P1, P2, P3). No explanation, no extra words.
|
|
7
|
+
|
|
8
|
+
Issue:
|
|
9
|
+
{{input}}
|
|
10
|
+
Priority:
|