@soleur/opencode 0.0.0-stage → 3.354.2
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 +660 -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 +29 -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 +361 -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 +171 -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 +818 -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 +411 -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 +509 -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 +115 -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 +165 -0
- package/scripts/sync-opencode-adapter.ts +498 -0
- package/scripts/sync-pr-behind.sh +647 -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 +67 -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 +143 -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 +120 -0
- package/skills/fix-issue/references/exclude-label-jq-snippet.md +97 -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 +670 -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 +331 -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 +141 -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 +1620 -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-evidence-comment.md +36 -0
- package/skills/review/references/review-todo-structure.md +165 -0
- package/skills/review/references/risk-tier-and-fix-rounds.md +97 -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 +3023 -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/cleanup-merged-archival.md +39 -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/delegated-act-authoring-form.md +7 -0
- package/skills/ship/references/detached-battery-verdict.md +13 -0
- package/skills/ship/references/epic-close-sweep.md +62 -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 +179 -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/verification-scaffold/SKILL.md +73 -0
- package/skills/verification-scaffold/references/gitleaks.toml.template +13 -0
- package/skills/verification-scaffold/references/guardrail-audit.md +156 -0
- package/skills/verification-scaffold/references/guards/block-stash-hook.sh.template +72 -0
- package/skills/verification-scaffold/references/guards/commit-on-main-hook.sh.template +82 -0
- package/skills/verification-scaffold/references/guards/orphan-test-check.sh.template +102 -0
- package/skills/verification-scaffold/references/guards/precommit-guard.sh.template +115 -0
- package/skills/verification-scaffold/references/guards/secret-scan-hook.sh.template +176 -0
- package/skills/verification-scaffold/references/guards/verification-gates.yml.template +49 -0
- package/skills/verification-scaffold/references/guards/wrapper-boundary.sh.template +47 -0
- package/skills/verification-scaffold/references/guards.tsv +21 -0
- package/skills/verification-scaffold/references/verification-readme.template +55 -0
- package/skills/verification-scaffold/scripts/verification-scaffold.sh +785 -0
- package/skills/verification-scaffold/test/bite-proof.test.sh +159 -0
- package/skills/verification-scaffold/test/generator.test.sh +319 -0
- package/skills/verification-scaffold/test/manifest.test.sh +144 -0
- package/skills/work/SKILL.md +1480 -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,281 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# feature-video dependency checker with optional auto-install
|
|
3
|
+
# No set -euo pipefail: soft dependency checks and install failures
|
|
4
|
+
# must not abort the script. Each install uses explicit if/then checks.
|
|
5
|
+
|
|
6
|
+
AUTO_INSTALL=false
|
|
7
|
+
[[ "${1:-}" == "--auto" ]] && AUTO_INSTALL=true
|
|
8
|
+
|
|
9
|
+
# Ensure ~/.local/bin is in PATH for user-local installs
|
|
10
|
+
[[ ":$PATH:" != *":$HOME/.local/bin:"* ]] && export PATH="$HOME/.local/bin:$PATH"
|
|
11
|
+
|
|
12
|
+
# Detect OS for install commands
|
|
13
|
+
_UNAME=$(uname -s)
|
|
14
|
+
OS="unknown"
|
|
15
|
+
[[ "$_UNAME" == "Darwin" ]] && OS="macos"
|
|
16
|
+
[[ "$_UNAME" == "Linux" ]] && OS="linux"
|
|
17
|
+
|
|
18
|
+
# Detect architecture for static binary downloads
|
|
19
|
+
ARCH=$(uname -m)
|
|
20
|
+
ARCH_SUFFIX=""
|
|
21
|
+
case "$ARCH" in
|
|
22
|
+
x86_64) ARCH_SUFFIX="amd64" ;;
|
|
23
|
+
aarch64|arm64) ARCH_SUFFIX="arm64" ;;
|
|
24
|
+
esac
|
|
25
|
+
|
|
26
|
+
# BtbN uses different arch names than rclone
|
|
27
|
+
FFMPEG_ARCH=""
|
|
28
|
+
case "$ARCH" in
|
|
29
|
+
x86_64) FFMPEG_ARCH="linux64" ;;
|
|
30
|
+
aarch64|arm64) FFMPEG_ARCH="linuxarm64" ;;
|
|
31
|
+
esac
|
|
32
|
+
|
|
33
|
+
# --- Pinned Versions ---
|
|
34
|
+
# To update: change version/build constants, fetch new checksums, update SHA256 constants.
|
|
35
|
+
#
|
|
36
|
+
# rclone:
|
|
37
|
+
# 1. Pick version from https://downloads.rclone.org/
|
|
38
|
+
# 2. Fetch checksums: curl -sL https://downloads.rclone.org/v<NEW_VERSION>/SHA256SUMS
|
|
39
|
+
# 3. Extract hashes for linux-amd64.zip and linux-arm64.zip
|
|
40
|
+
#
|
|
41
|
+
# ffmpeg (BtbN autobuilds):
|
|
42
|
+
# 1. Find latest autobuild tag:
|
|
43
|
+
# curl -s "https://api.github.com/repos/BtbN/FFmpeg-Builds/releases" | jq '.[1].tag_name'
|
|
44
|
+
# (index 1 because index 0 is the floating "latest" tag)
|
|
45
|
+
# 2. Fetch checksums and extract build ID:
|
|
46
|
+
# curl -sL "https://github.com/BtbN/FFmpeg-Builds/releases/download/<tag>/checksums.sha256" \
|
|
47
|
+
# | grep linux64-gpl.tar.xz | grep -v shared
|
|
48
|
+
# Output: <hash> ffmpeg-N-XXXXX-g<hash>-linux64-gpl.tar.xz
|
|
49
|
+
# The BUILD_ID is the "N-XXXXX-g<hash>" portion of the filename
|
|
50
|
+
# 3. Update FFMPEG_AUTOBUILD (date from tag), FFMPEG_BUILD_ID, and both SHA256 constants
|
|
51
|
+
|
|
52
|
+
RCLONE_VERSION="1.73.2"
|
|
53
|
+
FFMPEG_AUTOBUILD="2026-03-20-13-06"
|
|
54
|
+
FFMPEG_BUILD_ID="N-123570-gf72f692afa"
|
|
55
|
+
|
|
56
|
+
# rclone checksums (from https://downloads.rclone.org/v1.73.2/SHA256SUMS)
|
|
57
|
+
RCLONE_SHA256_AMD64="00a1d8cb85552b7b07bb0416559b2e78fcf9c6926662a52682d81b5f20c90535"
|
|
58
|
+
RCLONE_SHA256_ARM64="2f7d8b807e6ea638855129052c834ca23aa538d3ad7786e30b8ad1e97c5db47b"
|
|
59
|
+
|
|
60
|
+
# ffmpeg checksums (from BtbN autobuild-2026-03-20-13-06 checksums.sha256)
|
|
61
|
+
FFMPEG_SHA256_LINUX64="f550cd5fad7bc9045f9e6b4370204ddd245b8120f6bc193e0c09c58569e3cb32"
|
|
62
|
+
FFMPEG_SHA256_LINUXARM64="89b959bed4b6d63bad2d85870468a9a52cf84efd216a12fbf577a011ef391644"
|
|
63
|
+
|
|
64
|
+
verify_checksum() {
|
|
65
|
+
local file="$1"
|
|
66
|
+
local expected="$2"
|
|
67
|
+
local actual
|
|
68
|
+
actual=$(sha256sum "$file" | cut -d' ' -f1)
|
|
69
|
+
if [[ "$actual" != "$expected" ]]; then
|
|
70
|
+
echo " CHECKSUM MISMATCH for $file" >&2
|
|
71
|
+
echo " Expected: $expected" >&2
|
|
72
|
+
echo " Got: $actual" >&2
|
|
73
|
+
return 1
|
|
74
|
+
fi
|
|
75
|
+
echo " [ok] checksum verified"
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
install_ffmpeg_linux() {
|
|
79
|
+
local ffmpeg_arch="$1"
|
|
80
|
+
if [[ -z "$ffmpeg_arch" ]]; then
|
|
81
|
+
echo " Unsupported architecture: $ARCH. Install ffmpeg manually." >&2
|
|
82
|
+
return 1
|
|
83
|
+
fi
|
|
84
|
+
if ! tar --help >/dev/null 2>&1 || ! xz --help >/dev/null 2>&1; then
|
|
85
|
+
echo " tar and xz are required to install ffmpeg. Install them first." >&2
|
|
86
|
+
return 1
|
|
87
|
+
fi
|
|
88
|
+
local filename="ffmpeg-${FFMPEG_BUILD_ID}-${ffmpeg_arch}-gpl.tar.xz"
|
|
89
|
+
local url="https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-${FFMPEG_AUTOBUILD}/${filename}"
|
|
90
|
+
local expected
|
|
91
|
+
case "$ffmpeg_arch" in
|
|
92
|
+
linux64) expected="$FFMPEG_SHA256_LINUX64" ;;
|
|
93
|
+
linuxarm64) expected="$FFMPEG_SHA256_LINUXARM64" ;;
|
|
94
|
+
*) echo " No checksum available for architecture: $ffmpeg_arch" >&2; return 1 ;;
|
|
95
|
+
esac
|
|
96
|
+
local tmpdir
|
|
97
|
+
tmpdir=$(mktemp -d)
|
|
98
|
+
trap "rm -rf '$tmpdir'" RETURN
|
|
99
|
+
echo " Downloading ffmpeg (autobuild ${FFMPEG_AUTOBUILD})..."
|
|
100
|
+
mkdir -p "$HOME/.local/bin"
|
|
101
|
+
if ! curl -sfL "$url" -o "$tmpdir/ffmpeg.tar.xz"; then
|
|
102
|
+
echo " Download failed. Install ffmpeg manually: https://github.com/BtbN/FFmpeg-Builds/releases" >&2
|
|
103
|
+
return 1
|
|
104
|
+
fi
|
|
105
|
+
if ! verify_checksum "$tmpdir/ffmpeg.tar.xz" "$expected"; then
|
|
106
|
+
return 1
|
|
107
|
+
fi
|
|
108
|
+
tar -xJf "$tmpdir/ffmpeg.tar.xz" -C "$tmpdir"
|
|
109
|
+
cp "$tmpdir"/ffmpeg-*/bin/ffmpeg "$HOME/.local/bin/ffmpeg"
|
|
110
|
+
chmod +x "$HOME/.local/bin/ffmpeg"
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
install_rclone_linux() {
|
|
114
|
+
local arch_suffix="$1"
|
|
115
|
+
if [[ -z "$arch_suffix" ]]; then
|
|
116
|
+
echo " Unsupported architecture: $ARCH. Install rclone manually." >&2
|
|
117
|
+
return 1
|
|
118
|
+
fi
|
|
119
|
+
if ! command -v unzip >/dev/null 2>&1; then
|
|
120
|
+
echo " unzip is required to install rclone. Install unzip first." >&2
|
|
121
|
+
return 1
|
|
122
|
+
fi
|
|
123
|
+
local url="https://downloads.rclone.org/v${RCLONE_VERSION}/rclone-v${RCLONE_VERSION}-linux-${arch_suffix}.zip"
|
|
124
|
+
local expected
|
|
125
|
+
case "$arch_suffix" in
|
|
126
|
+
amd64) expected="$RCLONE_SHA256_AMD64" ;;
|
|
127
|
+
arm64) expected="$RCLONE_SHA256_ARM64" ;;
|
|
128
|
+
*) echo " No checksum available for architecture: $arch_suffix" >&2; return 1 ;;
|
|
129
|
+
esac
|
|
130
|
+
local tmpdir
|
|
131
|
+
tmpdir=$(mktemp -d)
|
|
132
|
+
trap "rm -rf '$tmpdir'" RETURN
|
|
133
|
+
echo " Downloading rclone v${RCLONE_VERSION}..."
|
|
134
|
+
mkdir -p "$HOME/.local/bin"
|
|
135
|
+
if ! curl -sfL "$url" -o "$tmpdir/rclone.zip"; then
|
|
136
|
+
echo " Download failed. Install rclone manually: https://rclone.org/install/" >&2
|
|
137
|
+
return 1
|
|
138
|
+
fi
|
|
139
|
+
if ! verify_checksum "$tmpdir/rclone.zip" "$expected"; then
|
|
140
|
+
return 1
|
|
141
|
+
fi
|
|
142
|
+
unzip -q "$tmpdir/rclone.zip" -d "$tmpdir"
|
|
143
|
+
cp "$tmpdir"/rclone-*/rclone "$HOME/.local/bin/rclone"
|
|
144
|
+
chmod +x "$HOME/.local/bin/rclone"
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
install_tool() {
|
|
148
|
+
local tool="$1"
|
|
149
|
+
if ! command -v curl >/dev/null 2>&1; then
|
|
150
|
+
echo " curl is required for auto-install. Install curl first." >&2
|
|
151
|
+
return 1
|
|
152
|
+
fi
|
|
153
|
+
case "$OS" in
|
|
154
|
+
linux)
|
|
155
|
+
case "$tool" in
|
|
156
|
+
ffmpeg) install_ffmpeg_linux "$FFMPEG_ARCH" ;;
|
|
157
|
+
rclone) install_rclone_linux "$ARCH_SUFFIX" ;;
|
|
158
|
+
*)
|
|
159
|
+
echo " No installer for $tool. Install manually." >&2
|
|
160
|
+
return 1
|
|
161
|
+
;;
|
|
162
|
+
esac
|
|
163
|
+
;;
|
|
164
|
+
macos)
|
|
165
|
+
# Homebrew handles its own integrity verification (bottle SHA256)
|
|
166
|
+
if command -v brew >/dev/null 2>&1; then
|
|
167
|
+
brew install "$tool"
|
|
168
|
+
else
|
|
169
|
+
echo " Install Homebrew first: https://brew.sh" >&2
|
|
170
|
+
return 1
|
|
171
|
+
fi
|
|
172
|
+
;;
|
|
173
|
+
*)
|
|
174
|
+
echo " Unsupported OS. Install $tool manually." >&2
|
|
175
|
+
return 1
|
|
176
|
+
;;
|
|
177
|
+
esac
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
verify_install() {
|
|
181
|
+
local tool="$1"
|
|
182
|
+
if command -v "$tool" >/dev/null 2>&1; then
|
|
183
|
+
echo " [ok] $tool (installed)"
|
|
184
|
+
else
|
|
185
|
+
echo " [FAILED] $tool installed but not found in PATH"
|
|
186
|
+
echo " Try opening a new terminal or check your PATH"
|
|
187
|
+
fi
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
attempt_install() {
|
|
191
|
+
local tool="$1"
|
|
192
|
+
|
|
193
|
+
if [[ "$AUTO_INSTALL" != "true" ]]; then
|
|
194
|
+
echo " $tool not installed. Install it? (y/N)"
|
|
195
|
+
read -r response
|
|
196
|
+
if [[ ! "$response" =~ ^[Yy]$ ]]; then
|
|
197
|
+
echo " [skip] $tool (declined)"
|
|
198
|
+
return
|
|
199
|
+
fi
|
|
200
|
+
fi
|
|
201
|
+
|
|
202
|
+
echo " [installing] $tool..."
|
|
203
|
+
if install_tool "$tool"; then
|
|
204
|
+
verify_install "$tool"
|
|
205
|
+
else
|
|
206
|
+
echo " [FAILED] $tool installation"
|
|
207
|
+
fi
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
echo "=== feature-video Dependency Check ==="
|
|
211
|
+
echo
|
|
212
|
+
|
|
213
|
+
# Hard dependency -- cannot record without this
|
|
214
|
+
if command -v agent-browser >/dev/null 2>&1; then
|
|
215
|
+
# Version guard: must be 0.21.x+ (Chrome for Testing, no Playwright dep)
|
|
216
|
+
AB_VERSION=$(agent-browser --version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')
|
|
217
|
+
if [[ -n "$AB_VERSION" ]]; then
|
|
218
|
+
AB_MAJOR=$(echo "$AB_VERSION" | cut -d. -f1)
|
|
219
|
+
AB_MINOR=$(echo "$AB_VERSION" | cut -d. -f2)
|
|
220
|
+
if [[ "$AB_MAJOR" -eq 0 && "$AB_MINOR" -lt 21 ]]; then
|
|
221
|
+
echo " [ERROR] agent-browser $AB_VERSION is too old (pre-0.21 uses Playwright, causes version mismatch)"
|
|
222
|
+
echo " Required: >= 0.21.1 (uses Chrome for Testing, no shared Playwright cache)"
|
|
223
|
+
echo " Fix: sudo npm uninstall -g agent-browser && npm install --prefix ~/.local -g agent-browser@0.22.3 && agent-browser install"
|
|
224
|
+
exit 1
|
|
225
|
+
fi
|
|
226
|
+
fi
|
|
227
|
+
echo " [ok] agent-browser${AB_VERSION:+ ($AB_VERSION)}"
|
|
228
|
+
|
|
229
|
+
# Launch smoke test (issue #6605): a broken Chrome launch otherwise hangs
|
|
230
|
+
# ~150s with zero output. `timeout` bounds it; isolated sessions avoid reusing
|
|
231
|
+
# a prior attempt's daemon state. The dominant Linux failure is the AppArmor
|
|
232
|
+
# unprivileged-user-namespace restriction (Ubuntu 23.10+, containers, VMs),
|
|
233
|
+
# fixed by launching Chrome with --no-sandbox.
|
|
234
|
+
if [[ "$OS" == "linux" ]]; then
|
|
235
|
+
if timeout 45 agent-browser open about:blank --headless --session ab-smoke-a >/dev/null 2>&1; then
|
|
236
|
+
echo " [ok] agent-browser can launch Chrome"
|
|
237
|
+
elif AGENT_BROWSER_ARGS="--no-sandbox" timeout 45 agent-browser open about:blank --headless --session ab-smoke-b >/dev/null 2>&1; then
|
|
238
|
+
echo " [WARN] agent-browser needs --no-sandbox to launch Chrome on this host"
|
|
239
|
+
echo " (Ubuntu 23.10+/container/VM restricts unprivileged user namespaces via AppArmor)."
|
|
240
|
+
echo " Fix -- export before running the recording flow:"
|
|
241
|
+
echo " export AGENT_BROWSER_ARGS=\"--no-sandbox\""
|
|
242
|
+
else
|
|
243
|
+
echo " [WARN] agent-browser could not launch Chrome within 45s, even with --no-sandbox."
|
|
244
|
+
echo " A wedged daemon may hold the socket. Clear it and retry:"
|
|
245
|
+
echo " pkill -f agent-browser-linux-x64; rm -rf /tmp/agent-browser/* \"/run/user/\$(id -u)/agent-browser/\"*"
|
|
246
|
+
fi
|
|
247
|
+
timeout 10 agent-browser close --session ab-smoke-a >/dev/null 2>&1 || true
|
|
248
|
+
AGENT_BROWSER_ARGS="--no-sandbox" timeout 10 agent-browser close --session ab-smoke-b >/dev/null 2>&1 || true
|
|
249
|
+
fi
|
|
250
|
+
else
|
|
251
|
+
echo " [MISSING] agent-browser (required)"
|
|
252
|
+
echo " Install: npm install --prefix ~/.local -g agent-browser@0.22.3 && agent-browser install"
|
|
253
|
+
echo " On Linux: agent-browser install --with-deps (if system deps missing)"
|
|
254
|
+
echo
|
|
255
|
+
echo "Cannot proceed without agent-browser."
|
|
256
|
+
exit 1
|
|
257
|
+
fi
|
|
258
|
+
|
|
259
|
+
# Soft dependency: ffmpeg (video/GIF conversion)
|
|
260
|
+
if command -v ffmpeg >/dev/null 2>&1; then
|
|
261
|
+
echo " [ok] ffmpeg"
|
|
262
|
+
else
|
|
263
|
+
attempt_install "ffmpeg"
|
|
264
|
+
fi
|
|
265
|
+
|
|
266
|
+
# Soft dependency: rclone (cloud upload)
|
|
267
|
+
if command -v rclone >/dev/null 2>&1; then
|
|
268
|
+
echo " [ok] rclone"
|
|
269
|
+
REMOTES=$(rclone listremotes 2>/dev/null || true)
|
|
270
|
+
if [ -z "$REMOTES" ]; then
|
|
271
|
+
echo " [skip] rclone: no remotes configured (see rclone skill)"
|
|
272
|
+
else
|
|
273
|
+
REMOTE_COUNT=$(echo "$REMOTES" | wc -l | tr -d ' ')
|
|
274
|
+
echo " [ok] rclone: $REMOTE_COUNT remote(s) configured"
|
|
275
|
+
fi
|
|
276
|
+
else
|
|
277
|
+
attempt_install "rclone"
|
|
278
|
+
fi
|
|
279
|
+
|
|
280
|
+
echo
|
|
281
|
+
echo "=== Check Complete ==="
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: file-todos
|
|
3
|
+
description: "This skill should be used when managing the file-based todo tracking system in the todos/ directory. It provides workflows for creating todos, managing status and dependencies, conducting triage, and integrating with code review."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- grok-harness-invoke:start -->
|
|
7
|
+
**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.
|
|
8
|
+
<!-- grok-harness-invoke:end -->
|
|
9
|
+
|
|
10
|
+
# File-Based Todo Tracking Skill
|
|
11
|
+
|
|
12
|
+
## Overview
|
|
13
|
+
|
|
14
|
+
The `todos/` directory contains a file-based tracking system for managing code review feedback, technical debt, feature requests, and work items. Each todo is a markdown file with YAML frontmatter and structured sections.
|
|
15
|
+
|
|
16
|
+
This skill should be used when:
|
|
17
|
+
|
|
18
|
+
- Creating new todos from findings or feedback
|
|
19
|
+
- Managing todo lifecycle (pending → ready → complete)
|
|
20
|
+
- Triaging pending items for approval
|
|
21
|
+
- Checking or managing dependencies
|
|
22
|
+
- Converting PR comments or code findings into tracked work
|
|
23
|
+
- Updating work logs during todo execution
|
|
24
|
+
|
|
25
|
+
## File Naming Convention
|
|
26
|
+
|
|
27
|
+
Todo files follow this naming pattern:
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
{issue_id}-{status}-{priority}-{description}.md
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**Components:**
|
|
34
|
+
|
|
35
|
+
- **issue_id**: Sequential number (001, 002, 003...) - never reused
|
|
36
|
+
- **status**: `pending` (needs triage), `ready` (approved), `complete` (done)
|
|
37
|
+
- **priority**: `p1` (critical), `p2` (important), `p3` (nice-to-have)
|
|
38
|
+
- **description**: kebab-case, brief description
|
|
39
|
+
|
|
40
|
+
**Examples:**
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
001-pending-p1-mailer-test.md
|
|
44
|
+
002-ready-p1-fix-n-plus-1.md
|
|
45
|
+
005-complete-p2-refactor-csv.md
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## File Structure
|
|
49
|
+
|
|
50
|
+
Each todo is a markdown file with YAML frontmatter and structured sections. Use the template at [todo-template.md](./assets/todo-template.md) as a starting point when creating new todos.
|
|
51
|
+
|
|
52
|
+
**Required sections:**
|
|
53
|
+
|
|
54
|
+
- **Problem Statement** - What is broken, missing, or needs improvement?
|
|
55
|
+
- **Findings** - Investigation results, root cause, key discoveries
|
|
56
|
+
- **Proposed Solutions** - Multiple options with pros/cons, effort, risk
|
|
57
|
+
- **Recommended Action** - Clear plan (filled during triage)
|
|
58
|
+
- **Acceptance Criteria** - Testable checklist items
|
|
59
|
+
- **Work Log** - Chronological record with date, actions, learnings
|
|
60
|
+
|
|
61
|
+
**Optional sections:**
|
|
62
|
+
|
|
63
|
+
- **Technical Details** - Affected files, related components, DB changes
|
|
64
|
+
- **Resources** - Links to errors, tests, PRs, documentation
|
|
65
|
+
- **Notes** - Additional context or decisions
|
|
66
|
+
|
|
67
|
+
**YAML frontmatter fields:**
|
|
68
|
+
|
|
69
|
+
```yaml
|
|
70
|
+
---
|
|
71
|
+
status: ready # pending | ready | complete
|
|
72
|
+
priority: p1 # p1 | p2 | p3
|
|
73
|
+
issue_id: "002"
|
|
74
|
+
tags: [rails, performance, database]
|
|
75
|
+
dependencies: ["001"] # Issue IDs this is blocked by
|
|
76
|
+
---
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Common Workflows
|
|
80
|
+
|
|
81
|
+
### Creating a New Todo
|
|
82
|
+
|
|
83
|
+
**To create a new todo from findings or feedback:**
|
|
84
|
+
|
|
85
|
+
1. Determine next issue ID: `ls todos/ | grep -o '^[0-9]\+' | sort -n | tail -1`
|
|
86
|
+
2. Copy template: `cp assets/todo-template.md todos/{NEXT_ID}-pending-{priority}-{description}.md`
|
|
87
|
+
3. Edit and fill required sections:
|
|
88
|
+
- Problem Statement
|
|
89
|
+
- Findings (if from investigation)
|
|
90
|
+
- Proposed Solutions (multiple options)
|
|
91
|
+
- Acceptance Criteria
|
|
92
|
+
- Add initial Work Log entry
|
|
93
|
+
4. Determine status: `pending` (needs triage) or `ready` (pre-approved)
|
|
94
|
+
5. Add relevant tags for filtering
|
|
95
|
+
|
|
96
|
+
**When to create a todo:**
|
|
97
|
+
|
|
98
|
+
- Requires more than 15-20 minutes of work
|
|
99
|
+
- Needs research, planning, or multiple approaches considered
|
|
100
|
+
- Has dependencies on other work
|
|
101
|
+
- Requires manager approval or prioritization
|
|
102
|
+
- Part of larger feature or refactor
|
|
103
|
+
- Technical debt needing documentation
|
|
104
|
+
|
|
105
|
+
**When to act immediately instead:**
|
|
106
|
+
|
|
107
|
+
- Issue is trivial (< 15 minutes)
|
|
108
|
+
- Complete context available now
|
|
109
|
+
- No planning needed
|
|
110
|
+
- User explicitly requests immediate action
|
|
111
|
+
- Simple bug fix with obvious solution
|
|
112
|
+
|
|
113
|
+
### Triaging Pending Items
|
|
114
|
+
|
|
115
|
+
**To triage pending todos:**
|
|
116
|
+
|
|
117
|
+
1. List pending items: `ls todos/*-pending-*.md`
|
|
118
|
+
2. For each todo:
|
|
119
|
+
- Read Problem Statement and Findings
|
|
120
|
+
- Review Proposed Solutions
|
|
121
|
+
- Make decision: approve, defer, or modify priority
|
|
122
|
+
3. Update approved todos:
|
|
123
|
+
- Rename file: `mv {file}-pending-{pri}-{desc}.md {file}-ready-{pri}-{desc}.md`
|
|
124
|
+
- Update frontmatter: `status: pending` → `status: ready`
|
|
125
|
+
- Fill "Recommended Action" section with clear plan
|
|
126
|
+
- Adjust priority if different from initial assessment
|
|
127
|
+
4. Deferred todos stay in `pending` status
|
|
128
|
+
|
|
129
|
+
**Use slash command:** `soleur:triage` for interactive approval workflow
|
|
130
|
+
|
|
131
|
+
### Managing Dependencies
|
|
132
|
+
|
|
133
|
+
**To track dependencies:**
|
|
134
|
+
|
|
135
|
+
```yaml
|
|
136
|
+
dependencies: ["002", "005"] # This todo blocked by issues 002 and 005
|
|
137
|
+
dependencies: [] # No blockers - can work immediately
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**To check what blocks a todo:**
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
grep "^dependencies:" todos/003-*.md
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**To find what a todo blocks:**
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
grep -l 'dependencies:.*"002"' todos/*.md
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**To verify blockers are complete before starting:** Check each dependency ID by running `ls todos/<dep-id>-complete-*.md 2>/dev/null` for each dependency. Replace `<dep-id>` with the actual dependency number (e.g., `001`, `002`).
|
|
153
|
+
|
|
154
|
+
### Updating Work Logs
|
|
155
|
+
|
|
156
|
+
**When working on a todo, always add a work log entry:**
|
|
157
|
+
|
|
158
|
+
```markdown
|
|
159
|
+
### YYYY-MM-DD - Session Title
|
|
160
|
+
|
|
161
|
+
**By:** Claude Code / Developer Name
|
|
162
|
+
|
|
163
|
+
**Actions:**
|
|
164
|
+
- Specific changes made (include file:line references)
|
|
165
|
+
- Commands executed
|
|
166
|
+
- Tests run
|
|
167
|
+
- Results of investigation
|
|
168
|
+
|
|
169
|
+
**Learnings:**
|
|
170
|
+
- What worked / what didn't
|
|
171
|
+
- Patterns discovered
|
|
172
|
+
- Key insights for future work
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Work logs serve as:
|
|
176
|
+
|
|
177
|
+
- Historical record of investigation
|
|
178
|
+
- Documentation of approaches attempted
|
|
179
|
+
- Knowledge sharing for team
|
|
180
|
+
- Context for future similar work
|
|
181
|
+
|
|
182
|
+
### Completing a Todo
|
|
183
|
+
|
|
184
|
+
**To mark a todo as complete:**
|
|
185
|
+
|
|
186
|
+
1. Verify all acceptance criteria checked off
|
|
187
|
+
2. Update Work Log with final session and results
|
|
188
|
+
3. Rename file: `mv {file}-ready-{pri}-{desc}.md {file}-complete-{pri}-{desc}.md`
|
|
189
|
+
4. Update frontmatter: `status: ready` → `status: complete`
|
|
190
|
+
5. Check for unblocked work: `grep -l 'dependencies:.*"002"' todos/*-ready-*.md`
|
|
191
|
+
6. Commit with issue reference: `feat: resolve issue 002`
|
|
192
|
+
|
|
193
|
+
## Integration with Development Workflows
|
|
194
|
+
|
|
195
|
+
| Trigger | Flow | Tool |
|
|
196
|
+
|---------|------|------|
|
|
197
|
+
| Code review | `soleur:review` → Findings → `soleur:triage` → Todos | Review agent + skill |
|
|
198
|
+
| PR comments | `/resolve_pr_parallel` → Individual fixes → Todos | gh CLI + skill |
|
|
199
|
+
| Code TODOs | `/resolve_todo_parallel` → Fixes + Complex todos | Agent + skill |
|
|
200
|
+
| Planning | Brainstorm → Create todo → Work → Complete | Skill |
|
|
201
|
+
| Feedback | Discussion → Create todo → Triage → Work | Skill + slash |
|
|
202
|
+
|
|
203
|
+
## Quick Reference Commands
|
|
204
|
+
|
|
205
|
+
**Finding work:**
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
# List highest priority unblocked work
|
|
209
|
+
grep -l 'dependencies: \[\]' todos/*-ready-p1-*.md
|
|
210
|
+
|
|
211
|
+
# List all pending items needing triage
|
|
212
|
+
ls todos/*-pending-*.md
|
|
213
|
+
|
|
214
|
+
# Find next issue ID
|
|
215
|
+
ls todos/ | grep -o '^[0-9]\+' | sort -n | tail -1 | awk '{printf "%03d", $1+1}'
|
|
216
|
+
|
|
217
|
+
# Count by status
|
|
218
|
+
ls -1 todos/*-pending-*.md 2>/dev/null | wc -l
|
|
219
|
+
ls -1 todos/*-ready-*.md 2>/dev/null | wc -l
|
|
220
|
+
ls -1 todos/*-complete-*.md 2>/dev/null | wc -l
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
**Dependency management:**
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
# What blocks this todo?
|
|
227
|
+
grep "^dependencies:" todos/003-*.md
|
|
228
|
+
|
|
229
|
+
# What does this todo block?
|
|
230
|
+
grep -l 'dependencies:.*"002"' todos/*.md
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
**Searching:**
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
# Search by tag
|
|
237
|
+
grep -l "tags:.*rails" todos/*.md
|
|
238
|
+
|
|
239
|
+
# Search by priority
|
|
240
|
+
ls todos/*-p1-*.md
|
|
241
|
+
|
|
242
|
+
# Full-text search
|
|
243
|
+
grep -r "payment" todos/
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
## Key Distinctions
|
|
247
|
+
|
|
248
|
+
**File-todos system (this skill):**
|
|
249
|
+
|
|
250
|
+
- Markdown files in `todos/` directory
|
|
251
|
+
- Development/project tracking
|
|
252
|
+
- Standalone markdown files with YAML frontmatter
|
|
253
|
+
- Used by humans and agents
|
|
254
|
+
|
|
255
|
+
**Rails Todo model:**
|
|
256
|
+
|
|
257
|
+
- Database model in `app/models/todo.rb`
|
|
258
|
+
- User-facing feature in the application
|
|
259
|
+
- Active Record CRUD operations
|
|
260
|
+
- Different from this file-based system
|
|
261
|
+
|
|
262
|
+
**TodoWrite tool:**
|
|
263
|
+
|
|
264
|
+
- In-memory task tracking during agent sessions
|
|
265
|
+
- Temporary tracking for single conversation
|
|
266
|
+
- Not persisted to disk
|
|
267
|
+
- Different from both systems above
|