dsh-ecc-skills 0.4.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/LICENSE +22 -0
- package/README.md +99 -0
- package/cordis.patch.yml +5 -0
- package/lib/index.js +195 -0
- package/package.json +46 -0
- package/skills/accessibility/SKILL.md +147 -0
- package/skills/agent-architecture-audit/SKILL.md +257 -0
- package/skills/agent-eval/SKILL.md +147 -0
- package/skills/agent-harness-construction/SKILL.md +74 -0
- package/skills/agent-introspection-debugging/SKILL.md +154 -0
- package/skills/agent-payment-x402/SKILL.md +225 -0
- package/skills/agent-self-evaluation/SKILL.md +182 -0
- package/skills/agent-sort/SKILL.md +216 -0
- package/skills/agentic-engineering/SKILL.md +64 -0
- package/skills/agentic-os/SKILL.md +388 -0
- package/skills/ai-first-engineering/SKILL.md +52 -0
- package/skills/ai-regression-testing/SKILL.md +386 -0
- package/skills/android-clean-architecture/SKILL.md +340 -0
- package/skills/angular-developer/SKILL.md +155 -0
- package/skills/api-connector-builder/SKILL.md +121 -0
- package/skills/api-design/SKILL.md +524 -0
- package/skills/architecture-decision-records/SKILL.md +180 -0
- package/skills/article-writing/SKILL.md +80 -0
- package/skills/automation-audit-ops/SKILL.md +143 -0
- package/skills/autonomous-agent-harness/SKILL.md +274 -0
- package/skills/autonomous-loops/SKILL.md +611 -0
- package/skills/backend-patterns/SKILL.md +562 -0
- package/skills/benchmark/SKILL.md +95 -0
- package/skills/benchmark-methodology/SKILL.md +191 -0
- package/skills/benchmark-optimization-loop/SKILL.md +71 -0
- package/skills/blender-motion-state-inspection/SKILL.md +165 -0
- package/skills/blueprint/SKILL.md +106 -0
- package/skills/brand-discovery/SKILL.md +145 -0
- package/skills/brand-voice/SKILL.md +98 -0
- package/skills/browser-qa/SKILL.md +105 -0
- package/skills/bun-runtime/SKILL.md +85 -0
- package/skills/canary-watch/SKILL.md +108 -0
- package/skills/carrier-relationship-management/SKILL.md +212 -0
- package/skills/cisco-ios-patterns/SKILL.md +164 -0
- package/skills/ck/SKILL.md +148 -0
- package/skills/claude-devfleet/SKILL.md +112 -0
- package/skills/click-path-audit/SKILL.md +245 -0
- package/skills/clickhouse-io/SKILL.md +445 -0
- package/skills/code-tour/SKILL.md +254 -0
- package/skills/codebase-onboarding/SKILL.md +234 -0
- package/skills/codehealth-mcp/SKILL.md +167 -0
- package/skills/coding-standards/SKILL.md +551 -0
- package/skills/competitive-platform-analysis/SKILL.md +214 -0
- package/skills/competitive-report-structure/SKILL.md +162 -0
- package/skills/compose-multiplatform-patterns/SKILL.md +300 -0
- package/skills/config-gc/SKILL.md +120 -0
- package/skills/configure-ecc/SKILL.md +206 -0
- package/skills/connections-optimizer/SKILL.md +190 -0
- package/skills/content-engine/SKILL.md +132 -0
- package/skills/content-hash-cache-pattern/SKILL.md +162 -0
- package/skills/context-budget/SKILL.md +136 -0
- package/skills/continuous-agent-loop/SKILL.md +46 -0
- package/skills/contract-first/SKILL.md +287 -0
- package/skills/cost-aware-llm-pipeline/SKILL.md +184 -0
- package/skills/cost-tracking/SKILL.md +97 -0
- package/skills/council/SKILL.md +204 -0
- package/skills/council-multi-model/SKILL.md +167 -0
- package/skills/cpp-coding-standards/SKILL.md +724 -0
- package/skills/cpp-testing/SKILL.md +325 -0
- package/skills/crosspost/SKILL.md +112 -0
- package/skills/csharp-testing/SKILL.md +322 -0
- package/skills/customer-billing-ops/SKILL.md +141 -0
- package/skills/customs-trade-compliance/SKILL.md +263 -0
- package/skills/dart-flutter-patterns/SKILL.md +564 -0
- package/skills/dashboard-builder/SKILL.md +109 -0
- package/skills/data-scraper-agent/SKILL.md +765 -0
- package/skills/data-throughput-accelerator/SKILL.md +74 -0
- package/skills/database-migrations/SKILL.md +430 -0
- package/skills/deep-research/SKILL.md +160 -0
- package/skills/defi-amm-security/SKILL.md +167 -0
- package/skills/delivery-gate/SKILL.md +126 -0
- package/skills/deployment-patterns/SKILL.md +428 -0
- package/skills/design-system/SKILL.md +83 -0
- package/skills/dev-team/SKILL.md +203 -0
- package/skills/django-celery/SKILL.md +458 -0
- package/skills/django-patterns/SKILL.md +735 -0
- package/skills/django-security/SKILL.md +644 -0
- package/skills/django-tdd/SKILL.md +730 -0
- package/skills/django-verification/SKILL.md +470 -0
- package/skills/dmux-workflows/SKILL.md +192 -0
- package/skills/docker-patterns/SKILL.md +520 -0
- package/skills/documentation-lookup/SKILL.md +91 -0
- package/skills/dotnet-patterns/SKILL.md +322 -0
- package/skills/dynamic-workflow-mode/SKILL.md +124 -0
- package/skills/e2e-testing/SKILL.md +327 -0
- package/skills/ecc-tools-cost-audit/SKILL.md +161 -0
- package/skills/email-ops/SKILL.md +122 -0
- package/skills/energy-procurement/SKILL.md +228 -0
- package/skills/enterprise-agent-ops/SKILL.md +51 -0
- package/skills/error-handling/SKILL.md +377 -0
- package/skills/eval-harness/SKILL.md +271 -0
- package/skills/evm-token-decimals/SKILL.md +131 -0
- package/skills/exa-search/SKILL.md +108 -0
- package/skills/fal-ai-media/SKILL.md +289 -0
- package/skills/fastapi-patterns/SKILL.md +514 -0
- package/skills/finance-billing-ops/SKILL.md +128 -0
- package/skills/flox-environments/SKILL.md +497 -0
- package/skills/flutter-dart-code-review/SKILL.md +436 -0
- package/skills/foundation-models-on-device/SKILL.md +243 -0
- package/skills/frontend-a11y/SKILL.md +446 -0
- package/skills/frontend-design-direction/SKILL.md +93 -0
- package/skills/frontend-patterns/SKILL.md +657 -0
- package/skills/fsharp-testing/SKILL.md +281 -0
- package/skills/gan-style-harness/SKILL.md +279 -0
- package/skills/generating-python-installer/SKILL.md +820 -0
- package/skills/git-workflow/SKILL.md +716 -0
- package/skills/github-ops/SKILL.md +145 -0
- package/skills/golang-patterns/SKILL.md +676 -0
- package/skills/golang-testing/SKILL.md +721 -0
- package/skills/google-workspace-ops/SKILL.md +96 -0
- package/skills/growth-log/SKILL.md +128 -0
- package/skills/healthcare-cdss-patterns/SKILL.md +246 -0
- package/skills/healthcare-emr-patterns/SKILL.md +160 -0
- package/skills/healthcare-eval-harness/SKILL.md +208 -0
- package/skills/healthcare-phi-compliance/SKILL.md +146 -0
- package/skills/hermes-imports/SKILL.md +89 -0
- package/skills/hexagonal-architecture/SKILL.md +277 -0
- package/skills/hipaa-compliance/SKILL.md +79 -0
- package/skills/homelab-network-readiness/SKILL.md +170 -0
- package/skills/homelab-network-setup/SKILL.md +130 -0
- package/skills/homelab-pihole-dns/SKILL.md +275 -0
- package/skills/homelab-vlan-segmentation/SKILL.md +312 -0
- package/skills/homelab-wireguard-vpn/SKILL.md +306 -0
- package/skills/hookify-rules/SKILL.md +128 -0
- package/skills/inherit-legacy-style/SKILL.md +157 -0
- package/skills/intent-driven-development/SKILL.md +360 -0
- package/skills/inventory-demand-planning/SKILL.md +247 -0
- package/skills/investor-materials/SKILL.md +97 -0
- package/skills/investor-outreach/SKILL.md +92 -0
- package/skills/ios-icon-gen/SKILL.md +158 -0
- package/skills/iterative-retrieval/SKILL.md +212 -0
- package/skills/ito-baskets/SKILL.md +263 -0
- package/skills/ito-compute/SKILL.md +151 -0
- package/skills/ito-inference/SKILL.md +119 -0
- package/skills/ito-training/SKILL.md +123 -0
- package/skills/java-coding-standards/SKILL.md +384 -0
- package/skills/jira-integration/SKILL.md +303 -0
- package/skills/jpa-patterns/SKILL.md +152 -0
- package/skills/knowledge-ops/SKILL.md +155 -0
- package/skills/kotlin-coroutines-flows/SKILL.md +285 -0
- package/skills/kotlin-exposed-patterns/SKILL.md +720 -0
- package/skills/kotlin-ktor-patterns/SKILL.md +690 -0
- package/skills/kotlin-patterns/SKILL.md +712 -0
- package/skills/kotlin-testing/SKILL.md +825 -0
- package/skills/kubernetes-patterns/SKILL.md +756 -0
- package/skills/laravel-patterns/SKILL.md +416 -0
- package/skills/laravel-plugin-discovery/SKILL.md +230 -0
- package/skills/laravel-security/SKILL.md +948 -0
- package/skills/laravel-tdd/SKILL.md +675 -0
- package/skills/laravel-verification/SKILL.md +180 -0
- package/skills/latency-critical-systems/SKILL.md +75 -0
- package/skills/lead-intelligence/SKILL.md +322 -0
- package/skills/liquid-glass-design/SKILL.md +279 -0
- package/skills/living-docs-governance/SKILL.md +137 -0
- package/skills/llm-trading-agent-security/SKILL.md +147 -0
- package/skills/logistics-exception-management/SKILL.md +222 -0
- package/skills/loop-design-check/SKILL.md +143 -0
- package/skills/mailtrap-email-integration/SKILL.md +77 -0
- package/skills/make-interfaces-feel-better/SKILL.md +152 -0
- package/skills/manim-video/SKILL.md +90 -0
- package/skills/market-research/SKILL.md +76 -0
- package/skills/marketing-campaign/SKILL.md +114 -0
- package/skills/mcp-server-patterns/SKILL.md +70 -0
- package/skills/messages-ops/SKILL.md +105 -0
- package/skills/ml-adoption-playbook/SKILL.md +57 -0
- package/skills/mle-workflow/SKILL.md +348 -0
- package/skills/motion-advanced/SKILL.md +597 -0
- package/skills/motion-foundations/SKILL.md +300 -0
- package/skills/motion-patterns/SKILL.md +435 -0
- package/skills/motion-ui/SKILL.md +576 -0
- package/skills/mysql-patterns/SKILL.md +413 -0
- package/skills/nanoclaw-repl/SKILL.md +34 -0
- package/skills/nasiko-control-plane/SKILL.md +49 -0
- package/skills/nestjs-patterns/SKILL.md +231 -0
- package/skills/netmiko-ssh-automation/SKILL.md +174 -0
- package/skills/network-bgp-diagnostics/SKILL.md +168 -0
- package/skills/network-config-validation/SKILL.md +211 -0
- package/skills/network-interface-health/SKILL.md +153 -0
- package/skills/nextjs-turbopack/SKILL.md +58 -0
- package/skills/nodejs-keccak256/SKILL.md +103 -0
- package/skills/nutrient-document-processing/SKILL.md +168 -0
- package/skills/nuxt4-patterns/SKILL.md +101 -0
- package/skills/opensource-pipeline/SKILL.md +256 -0
- package/skills/orch-add-feature/SKILL.md +45 -0
- package/skills/orch-build-mvp/SKILL.md +49 -0
- package/skills/orch-change-feature/SKILL.md +43 -0
- package/skills/orch-fix-defect/SKILL.md +43 -0
- package/skills/orch-pipeline/SKILL.md +121 -0
- package/skills/orch-refine-code/SKILL.md +44 -0
- package/skills/parallel-execution-optimizer/SKILL.md +74 -0
- package/skills/perl-patterns/SKILL.md +505 -0
- package/skills/perl-security/SKILL.md +504 -0
- package/skills/perl-testing/SKILL.md +476 -0
- package/skills/plan-canvas/SKILL.md +196 -0
- package/skills/plankton-code-quality/SKILL.md +237 -0
- package/skills/postgres-patterns/SKILL.md +148 -0
- package/skills/prediction-market-oracle-research/SKILL.md +64 -0
- package/skills/prediction-market-risk-review/SKILL.md +61 -0
- package/skills/prisma-patterns/SKILL.md +401 -0
- package/skills/product-capability/SKILL.md +142 -0
- package/skills/product-lens/SKILL.md +93 -0
- package/skills/production-audit/SKILL.md +207 -0
- package/skills/production-scheduling/SKILL.md +238 -0
- package/skills/project-flow-ops/SKILL.md +112 -0
- package/skills/prompt-optimizer/SKILL.md +398 -0
- package/skills/python-patterns/SKILL.md +751 -0
- package/skills/python-testing/SKILL.md +817 -0
- package/skills/pytorch-patterns/SKILL.md +397 -0
- package/skills/quality-nonconformance/SKILL.md +260 -0
- package/skills/quarkus-patterns/SKILL.md +723 -0
- package/skills/quarkus-security/SKILL.md +468 -0
- package/skills/quarkus-tdd/SKILL.md +812 -0
- package/skills/quarkus-verification/SKILL.md +481 -0
- package/skills/ralphinho-rfc-pipeline/SKILL.md +68 -0
- package/skills/react-native-patterns/SKILL.md +326 -0
- package/skills/react-patterns/SKILL.md +342 -0
- package/skills/react-performance/SKILL.md +575 -0
- package/skills/react-testing/SKILL.md +424 -0
- package/skills/recsys-pipeline-architect/SKILL.md +115 -0
- package/skills/recursive-decision-ledger/SKILL.md +81 -0
- package/skills/redis-patterns/SKILL.md +404 -0
- package/skills/regex-vs-llm-structured-text/SKILL.md +221 -0
- package/skills/remotion-video-creation/SKILL.md +43 -0
- package/skills/repo-scan/SKILL.md +170 -0
- package/skills/research-ops/SKILL.md +113 -0
- package/skills/returns-reverse-logistics/SKILL.md +240 -0
- package/skills/rules-distill/SKILL.md +265 -0
- package/skills/rust-patterns/SKILL.md +500 -0
- package/skills/rust-testing/SKILL.md +501 -0
- package/skills/safety-guard/SKILL.md +76 -0
- package/skills/santa-method/SKILL.md +307 -0
- package/skills/scientific-db-pubmed-database/SKILL.md +176 -0
- package/skills/scientific-db-uspto-database/SKILL.md +178 -0
- package/skills/scientific-pkg-gget/SKILL.md +167 -0
- package/skills/scientific-thinking-literature-review/SKILL.md +193 -0
- package/skills/scientific-thinking-scholar-evaluation/SKILL.md +161 -0
- package/skills/search-first/SKILL.md +183 -0
- package/skills/security-bounty-hunter/SKILL.md +100 -0
- package/skills/security-scan/SKILL.md +166 -0
- package/skills/seo/SKILL.md +155 -0
- package/skills/skill-scout/SKILL.md +141 -0
- package/skills/skill-stocktake/SKILL.md +195 -0
- package/skills/social-graph-ranker/SKILL.md +155 -0
- package/skills/social-publisher/SKILL.md +130 -0
- package/skills/springboot-patterns/SKILL.md +315 -0
- package/skills/springboot-security/SKILL.md +273 -0
- package/skills/springboot-tdd/SKILL.md +159 -0
- package/skills/springboot-verification/SKILL.md +232 -0
- package/skills/swift-actor-persistence/SKILL.md +144 -0
- package/skills/swift-concurrency-6-2/SKILL.md +216 -0
- package/skills/swift-protocol-di-testing/SKILL.md +191 -0
- package/skills/swiftui-patterns/SKILL.md +259 -0
- package/skills/taste/SKILL.md +264 -0
- package/skills/tdd-workflow/SKILL.md +583 -0
- package/skills/team-agent-orchestration/SKILL.md +111 -0
- package/skills/team-builder/SKILL.md +169 -0
- package/skills/terminal-opener/SKILL.md +55 -0
- package/skills/terminal-ops/SKILL.md +110 -0
- package/skills/tinystruct-patterns/SKILL.md +279 -0
- package/skills/token-budget-advisor/SKILL.md +134 -0
- package/skills/ui-demo/SKILL.md +466 -0
- package/skills/ui-to-vue/SKILL.md +135 -0
- package/skills/uncloud/SKILL.md +344 -0
- package/skills/unified-memory/SKILL.md +170 -0
- package/skills/unified-notifications-ops/SKILL.md +188 -0
- package/skills/verification-loop/SKILL.md +129 -0
- package/skills/video-editing/SKILL.md +311 -0
- package/skills/videodb/SKILL.md +375 -0
- package/skills/vite-patterns/SKILL.md +450 -0
- package/skills/vue-patterns/SKILL.md +471 -0
- package/skills/windows-desktop-e2e/SKILL.md +888 -0
- package/skills/workspace-surface-audit/SKILL.md +126 -0
- package/skills/x-api/SKILL.md +235 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nuxt4-patterns
|
|
3
|
+
description: Nuxt 4 app patterns for hydration safety, performance, route rules, lazy loading, and SSR-safe data fetching with useFetch and useAsyncData. Use when building or reviewing a Nuxt 4 app, or debugging hydration mismatches and SSR-safe data fetching.
|
|
4
|
+
metadata:
|
|
5
|
+
origin: ECC
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Nuxt 4 Patterns
|
|
9
|
+
|
|
10
|
+
Use when building or debugging Nuxt 4 apps with SSR, hybrid rendering, route rules, or page-level data fetching.
|
|
11
|
+
|
|
12
|
+
## When to Activate
|
|
13
|
+
|
|
14
|
+
- Hydration mismatches between server HTML and client state
|
|
15
|
+
- Route-level rendering decisions such as prerender, SWR, ISR, or client-only sections
|
|
16
|
+
- Performance work around lazy loading, lazy hydration, or payload size
|
|
17
|
+
- Page or component data fetching with `useFetch`, `useAsyncData`, or `$fetch`
|
|
18
|
+
- Nuxt routing issues tied to route params, middleware, or SSR/client differences
|
|
19
|
+
|
|
20
|
+
## Hydration Safety
|
|
21
|
+
|
|
22
|
+
- Keep the first render deterministic. Do not put `Date.now()`, `Math.random()`, browser-only APIs, or storage reads directly into SSR-rendered template state.
|
|
23
|
+
- Move browser-only logic behind `onMounted()`, `import.meta.client`, `ClientOnly`, or a `.client.vue` component when the server cannot produce the same markup.
|
|
24
|
+
- Use Nuxt's `useRoute()` composable, not the one from `vue-router`.
|
|
25
|
+
- Do not use `route.fullPath` to drive SSR-rendered markup. URL fragments are client-only, which can create hydration mismatches.
|
|
26
|
+
- Treat `ssr: false` as an escape hatch for truly browser-only areas, not a default fix for mismatches.
|
|
27
|
+
|
|
28
|
+
## Data Fetching
|
|
29
|
+
|
|
30
|
+
- Prefer `await useFetch()` for SSR-safe API reads in pages and components. It forwards server-fetched data into the Nuxt payload and avoids a second fetch on hydration.
|
|
31
|
+
- Use `useAsyncData()` when the fetcher is not a simple `$fetch()` call, when you need a custom key, or when you are composing multiple async sources.
|
|
32
|
+
- Give `useAsyncData()` a stable key for cache reuse and predictable refresh behavior.
|
|
33
|
+
- Keep `useAsyncData()` handlers side-effect free. They can run during SSR and hydration.
|
|
34
|
+
- Use `$fetch()` for user-triggered writes or client-only actions, not top-level page data that should be hydrated from SSR.
|
|
35
|
+
- Use `lazy: true`, `useLazyFetch()`, or `useLazyAsyncData()` for non-critical data that should not block navigation. Handle `status === 'pending'` in the UI.
|
|
36
|
+
- Use `server: false` only for data that is not needed for SEO or the first paint.
|
|
37
|
+
- Trim payload size with `pick` and prefer shallower payloads when deep reactivity is unnecessary.
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
const route = useRoute()
|
|
41
|
+
|
|
42
|
+
const { data: article, status, error, refresh } = await useAsyncData(
|
|
43
|
+
() => `article:${route.params.slug}`,
|
|
44
|
+
() => $fetch(`/api/articles/${route.params.slug}`),
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
const { data: comments } = await useFetch(`/api/articles/${route.params.slug}/comments`, {
|
|
48
|
+
lazy: true,
|
|
49
|
+
server: false,
|
|
50
|
+
})
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Route Rules
|
|
54
|
+
|
|
55
|
+
Prefer `routeRules` in `nuxt.config.ts` for rendering and caching strategy:
|
|
56
|
+
|
|
57
|
+
```ts
|
|
58
|
+
export default defineNuxtConfig({
|
|
59
|
+
routeRules: {
|
|
60
|
+
'/': { prerender: true },
|
|
61
|
+
'/products/**': { swr: 3600 },
|
|
62
|
+
'/blog/**': { isr: true },
|
|
63
|
+
'/admin/**': { ssr: false },
|
|
64
|
+
'/api/**': { cache: { maxAge: 60 * 60 } },
|
|
65
|
+
},
|
|
66
|
+
})
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
- `prerender`: static HTML at build time
|
|
70
|
+
- `swr`: serve cached content and revalidate in the background
|
|
71
|
+
- `isr`: incremental static regeneration on supported platforms
|
|
72
|
+
- `ssr: false`: client-rendered route
|
|
73
|
+
- `cache` or `redirect`: Nitro-level response behavior
|
|
74
|
+
|
|
75
|
+
Pick route rules per route group, not globally. Marketing pages, catalogs, dashboards, and APIs usually need different strategies.
|
|
76
|
+
|
|
77
|
+
## Lazy Loading and Performance
|
|
78
|
+
|
|
79
|
+
- Nuxt already code-splits pages by route. Keep route boundaries meaningful before micro-optimizing component splits.
|
|
80
|
+
- Use the `Lazy` prefix to dynamically import non-critical components.
|
|
81
|
+
- Conditionally render lazy components with `v-if` so the chunk is not loaded until the UI actually needs it.
|
|
82
|
+
- Use lazy hydration for below-the-fold or non-critical interactive UI.
|
|
83
|
+
|
|
84
|
+
```vue
|
|
85
|
+
<template>
|
|
86
|
+
<LazyRecommendations v-if="showRecommendations" />
|
|
87
|
+
<LazyProductGallery hydrate-on-visible />
|
|
88
|
+
</template>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
- For custom strategies, use `defineLazyHydrationComponent()` with a visibility or idle strategy.
|
|
92
|
+
- Nuxt lazy hydration works on single-file components. Passing new props to a lazily hydrated component will trigger hydration immediately.
|
|
93
|
+
- Use `NuxtLink` for internal navigation so Nuxt can prefetch route components and generated payloads.
|
|
94
|
+
|
|
95
|
+
## Review Checklist
|
|
96
|
+
|
|
97
|
+
- First SSR render and hydrated client render produce the same markup
|
|
98
|
+
- Page data uses `useFetch` or `useAsyncData`, not top-level `$fetch`
|
|
99
|
+
- Non-critical data is lazy and has explicit loading UI
|
|
100
|
+
- Route rules match the page's SEO and freshness requirements
|
|
101
|
+
- Heavy interactive islands are lazy-loaded or lazily hydrated
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: opensource-pipeline
|
|
3
|
+
description: "Open-source pipeline: fork, sanitize, and package private projects for safe public release. Chains 3 agents (forker, sanitizer, packager). Triggers: '/opensource', 'open source this', 'make this public', 'prepare for open source'. Use when a private project must be forked, stripped of secrets, and packaged for public release."
|
|
4
|
+
metadata:
|
|
5
|
+
origin: ECC
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Open-Source Pipeline Skill
|
|
9
|
+
|
|
10
|
+
Safely open-source any project through a 3-stage pipeline: **Fork** (strip secrets) → **Sanitize** (verify clean) → **Package** (CLAUDE.md + setup.sh + README).
|
|
11
|
+
|
|
12
|
+
## When to Activate
|
|
13
|
+
|
|
14
|
+
- User says "open source this project" or "make this public"
|
|
15
|
+
- User wants to prepare a private repo for public release
|
|
16
|
+
- User needs to strip secrets before pushing to GitHub
|
|
17
|
+
- User invokes `/opensource fork`, `/opensource verify`, or `/opensource package`
|
|
18
|
+
|
|
19
|
+
## Commands
|
|
20
|
+
|
|
21
|
+
| Command | Action |
|
|
22
|
+
|---------|--------|
|
|
23
|
+
| `/opensource fork PROJECT` | Full pipeline: fork + sanitize + package |
|
|
24
|
+
| `/opensource verify PROJECT` | Run sanitizer on existing repo |
|
|
25
|
+
| `/opensource package PROJECT` | Generate CLAUDE.md + setup.sh + README |
|
|
26
|
+
| `/opensource list` | Show all staged projects |
|
|
27
|
+
| `/opensource status PROJECT` | Show reports for a staged project |
|
|
28
|
+
|
|
29
|
+
## Protocol
|
|
30
|
+
|
|
31
|
+
### /opensource fork PROJECT
|
|
32
|
+
|
|
33
|
+
**Full pipeline — the main workflow.**
|
|
34
|
+
|
|
35
|
+
#### Step 1: Gather Parameters
|
|
36
|
+
|
|
37
|
+
Resolve the project path. If PROJECT contains `/`, treat as a path (absolute or relative). Otherwise check: current working directory, `$HOME/PROJECT`, then ask the user.
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
SOURCE_PATH="<resolved absolute path>"
|
|
41
|
+
STAGING_PATH="$HOME/opensource-staging/${PROJECT_NAME}"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Ask the user:
|
|
45
|
+
1. "Which project?" (if not found)
|
|
46
|
+
2. "License? (MIT / Apache-2.0 / GPL-3.0 / BSD-3-Clause)"
|
|
47
|
+
3. "GitHub org or username?" (default: detect via `gh api user -q .login`)
|
|
48
|
+
4. "GitHub repo name?" (default: project name)
|
|
49
|
+
5. "Description for README?" (analyze project for suggestion)
|
|
50
|
+
|
|
51
|
+
#### Step 2: Create Staging Directory
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
mkdir -p $HOME/opensource-staging/
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
#### Step 3: Run Forker Agent
|
|
58
|
+
|
|
59
|
+
Spawn the `opensource-forker` agent:
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
Agent(
|
|
63
|
+
description="Fork {PROJECT} for open-source",
|
|
64
|
+
subagent_type="opensource-forker",
|
|
65
|
+
prompt="""
|
|
66
|
+
Fork project for open-source release.
|
|
67
|
+
|
|
68
|
+
Source: {SOURCE_PATH}
|
|
69
|
+
Target: {STAGING_PATH}
|
|
70
|
+
License: {chosen_license}
|
|
71
|
+
|
|
72
|
+
Follow the full forking protocol:
|
|
73
|
+
1. Copy files (exclude .git, node_modules, __pycache__, .venv)
|
|
74
|
+
2. Strip all secrets and credentials
|
|
75
|
+
3. Replace internal references with placeholders
|
|
76
|
+
4. Generate .env.example
|
|
77
|
+
5. Clean git history
|
|
78
|
+
6. Generate FORK_REPORT.md in {STAGING_PATH}/FORK_REPORT.md
|
|
79
|
+
"""
|
|
80
|
+
)
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Wait for completion. Read `{STAGING_PATH}/FORK_REPORT.md`.
|
|
84
|
+
|
|
85
|
+
#### Step 4: Run Sanitizer Agent
|
|
86
|
+
|
|
87
|
+
Spawn the `opensource-sanitizer` agent:
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
Agent(
|
|
91
|
+
description="Verify {PROJECT} sanitization",
|
|
92
|
+
subagent_type="opensource-sanitizer",
|
|
93
|
+
prompt="""
|
|
94
|
+
Verify sanitization of open-source fork.
|
|
95
|
+
|
|
96
|
+
Project: {STAGING_PATH}
|
|
97
|
+
Source (for reference): {SOURCE_PATH}
|
|
98
|
+
|
|
99
|
+
Run ALL scan categories:
|
|
100
|
+
1. Secrets scan (CRITICAL)
|
|
101
|
+
2. PII scan (CRITICAL)
|
|
102
|
+
3. Internal references scan (CRITICAL)
|
|
103
|
+
4. Dangerous files check (CRITICAL)
|
|
104
|
+
5. Configuration completeness (WARNING)
|
|
105
|
+
6. Git history audit
|
|
106
|
+
|
|
107
|
+
Generate SANITIZATION_REPORT.md inside {STAGING_PATH}/ with PASS/FAIL verdict.
|
|
108
|
+
"""
|
|
109
|
+
)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Wait for completion. Read `{STAGING_PATH}/SANITIZATION_REPORT.md`.
|
|
113
|
+
|
|
114
|
+
**If FAIL:** Show findings to user. Ask: "Fix these and re-scan, or abort?"
|
|
115
|
+
- If fix: Apply fixes, re-run sanitizer (maximum 3 retry attempts — after 3 FAILs, present all findings and ask user to fix manually)
|
|
116
|
+
- If abort: Clean up staging directory
|
|
117
|
+
|
|
118
|
+
**If PASS or PASS WITH WARNINGS:** Continue to Step 5.
|
|
119
|
+
|
|
120
|
+
#### Step 5: Run Packager Agent
|
|
121
|
+
|
|
122
|
+
Spawn the `opensource-packager` agent:
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
Agent(
|
|
126
|
+
description="Package {PROJECT} for open-source",
|
|
127
|
+
subagent_type="opensource-packager",
|
|
128
|
+
prompt="""
|
|
129
|
+
Generate open-source packaging for project.
|
|
130
|
+
|
|
131
|
+
Project: {STAGING_PATH}
|
|
132
|
+
License: {chosen_license}
|
|
133
|
+
Project name: {PROJECT_NAME}
|
|
134
|
+
Description: {description}
|
|
135
|
+
GitHub repo: {github_repo}
|
|
136
|
+
|
|
137
|
+
Generate:
|
|
138
|
+
1. CLAUDE.md (commands, architecture, key files)
|
|
139
|
+
2. setup.sh (one-command bootstrap, make executable)
|
|
140
|
+
3. README.md (or enhance existing)
|
|
141
|
+
4. LICENSE
|
|
142
|
+
5. CONTRIBUTING.md
|
|
143
|
+
6. .github/ISSUE_TEMPLATE/ (bug_report.md, feature_request.md)
|
|
144
|
+
"""
|
|
145
|
+
)
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
#### Step 6: Final Review
|
|
149
|
+
|
|
150
|
+
Present to user:
|
|
151
|
+
```
|
|
152
|
+
Open-Source Fork Ready: {PROJECT_NAME}
|
|
153
|
+
|
|
154
|
+
Location: {STAGING_PATH}
|
|
155
|
+
License: {license}
|
|
156
|
+
Files generated:
|
|
157
|
+
- CLAUDE.md
|
|
158
|
+
- setup.sh (executable)
|
|
159
|
+
- README.md
|
|
160
|
+
- LICENSE
|
|
161
|
+
- CONTRIBUTING.md
|
|
162
|
+
- .env.example ({N} variables)
|
|
163
|
+
|
|
164
|
+
Sanitization: {sanitization_verdict}
|
|
165
|
+
|
|
166
|
+
Next steps:
|
|
167
|
+
1. Review: cd {STAGING_PATH}
|
|
168
|
+
2. Create repo: gh repo create {github_org}/{github_repo} --public
|
|
169
|
+
3. Push: git remote add origin ... && git push -u origin main
|
|
170
|
+
|
|
171
|
+
Proceed with GitHub creation? (yes/no/review first)
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
#### Step 7: GitHub Publish (on user approval)
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
cd "{STAGING_PATH}"
|
|
178
|
+
gh repo create "{github_org}/{github_repo}" --public --source=. --push --description "{description}"
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
### /opensource verify PROJECT
|
|
184
|
+
|
|
185
|
+
Run sanitizer independently. Resolve path: if PROJECT contains `/`, treat as a path. Otherwise check `$HOME/opensource-staging/PROJECT`, then `$HOME/PROJECT`, then current directory.
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
Agent(
|
|
189
|
+
subagent_type="opensource-sanitizer",
|
|
190
|
+
prompt="Verify sanitization of: {resolved_path}. Run all 6 scan categories and generate SANITIZATION_REPORT.md."
|
|
191
|
+
)
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
### /opensource package PROJECT
|
|
197
|
+
|
|
198
|
+
Run packager independently. Ask for "License?" and "Description?", then:
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
Agent(
|
|
202
|
+
subagent_type="opensource-packager",
|
|
203
|
+
prompt="Package: {resolved_path} ..."
|
|
204
|
+
)
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
### /opensource list
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
ls -d $HOME/opensource-staging/*/
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Show each project with pipeline progress (FORK_REPORT.md, SANITIZATION_REPORT.md, CLAUDE.md presence).
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
### /opensource status PROJECT
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
cat $HOME/opensource-staging/${PROJECT}/SANITIZATION_REPORT.md
|
|
223
|
+
cat $HOME/opensource-staging/${PROJECT}/FORK_REPORT.md
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
## Staging Layout
|
|
227
|
+
|
|
228
|
+
```
|
|
229
|
+
$HOME/opensource-staging/
|
|
230
|
+
my-project/
|
|
231
|
+
FORK_REPORT.md # From forker agent
|
|
232
|
+
SANITIZATION_REPORT.md # From sanitizer agent
|
|
233
|
+
CLAUDE.md # From packager agent
|
|
234
|
+
setup.sh # From packager agent
|
|
235
|
+
README.md # From packager agent
|
|
236
|
+
.env.example # From forker agent
|
|
237
|
+
... # Sanitized project files
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## Anti-Patterns
|
|
241
|
+
|
|
242
|
+
- **Never** push to GitHub without user approval
|
|
243
|
+
- **Never** skip the sanitizer — it is the safety gate
|
|
244
|
+
- **Never** proceed after a sanitizer FAIL without fixing all critical findings
|
|
245
|
+
- **Never** leave `.env`, `*.pem`, or `credentials.json` in the staging directory
|
|
246
|
+
|
|
247
|
+
## Best Practices
|
|
248
|
+
|
|
249
|
+
- Always run the full pipeline (fork → sanitize → package) for new releases
|
|
250
|
+
- The staging directory persists until explicitly cleaned up — use it for review
|
|
251
|
+
- Re-run the sanitizer after any manual fixes before publishing
|
|
252
|
+
- Parameterize secrets rather than deleting them — preserve project functionality
|
|
253
|
+
|
|
254
|
+
## Related Skills
|
|
255
|
+
|
|
256
|
+
See `security-review` for secret detection patterns used by the sanitizer.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orch-add-feature
|
|
3
|
+
description: Orchestrate building a brand-new feature end to end — research, plan, TDD implementation, review, and gated commit — by delegating each phase to the matching ECC agent. Use when adding a capability that does not exist yet.
|
|
4
|
+
metadata:
|
|
5
|
+
origin: ECC
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# orch-add-feature
|
|
9
|
+
|
|
10
|
+
Actor · action · target: **orch · add · feature**. Thin wrapper over the shared
|
|
11
|
+
engine in [`orch-pipeline`](../orch-pipeline/SKILL.md).
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
|
|
15
|
+
- The user wants a capability that does **not exist yet** ("add", "build",
|
|
16
|
+
"implement", "support …").
|
|
17
|
+
- It is net-new behavior — not a correction (`orch-fix-defect`) and not an
|
|
18
|
+
alteration of existing behavior (`orch-change-feature`).
|
|
19
|
+
|
|
20
|
+
## Operation settings
|
|
21
|
+
|
|
22
|
+
- **Default size floor:** standard — run Research + Plan unless clearly small.
|
|
23
|
+
- **Phase mask:** 0 → 1 → 2 → 4 → 5 → 6 (skip 3 Scaffold; that is MVP-only).
|
|
24
|
+
- **First move (phase 4):** write *new* failing tests for the new behavior, then
|
|
25
|
+
implement to green.
|
|
26
|
+
|
|
27
|
+
## How It Works
|
|
28
|
+
|
|
29
|
+
1. Run the `orch-pipeline` engine with the settings above.
|
|
30
|
+
2. Classify size first; small / trivial features collapse toward 4 → 5 → 6.
|
|
31
|
+
3. Stop at **Gate 1** (plan approval) and **Gate 2** (pre-commit).
|
|
32
|
+
4. Add `security-reviewer` if the feature touches a security trigger.
|
|
33
|
+
|
|
34
|
+
> Related: `/feature-dev` is a standalone version of this flow. `orch-add-feature`
|
|
35
|
+
> differs by sharing the `orch-pipeline` engine — the size classifier and the two
|
|
36
|
+
> gates — with the rest of the family, so it right-sizes trivial features to 4 → 5 → 6.
|
|
37
|
+
|
|
38
|
+
## Example
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
orch-add-feature: add OAuth2 login to nws-poller
|
|
42
|
+
→ research existing auth libs → plan task_list [GATE 1: approve]
|
|
43
|
+
→ TDD each task → code-review (+ security-reviewer: auth path)
|
|
44
|
+
→ commit [GATE 2: confirm]
|
|
45
|
+
```
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orch-build-mvp
|
|
3
|
+
description: Orchestrate bootstrapping a working MVP from a design or spec document — ingest the doc, plan thin vertical slices, scaffold the first end-to-end slice, then TDD-implement, review, and gated commit. Use to turn an SDD/PRD into a running starting point. Use when a design or spec document must become a running MVP through planned vertical slices.
|
|
4
|
+
metadata:
|
|
5
|
+
origin: ECC
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# orch-build-mvp
|
|
9
|
+
|
|
10
|
+
Actor · action · target: **orch · build · mvp**. Thin wrapper over the shared
|
|
11
|
+
engine in [`orch-pipeline`](../orch-pipeline/SKILL.md).
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
|
|
15
|
+
- The user has a **design / spec document** (SDD, PRD, system_design) and wants a
|
|
16
|
+
working vertical slice bootstrapped from it.
|
|
17
|
+
- Takes a doc path as its argument, e.g. `civicpulse/docs/SDD-v0.6.md`.
|
|
18
|
+
|
|
19
|
+
## Operation settings
|
|
20
|
+
|
|
21
|
+
- **Default size floor:** large — this is the full pipeline including Scaffold.
|
|
22
|
+
- **Phase mask:** 0 (read the spec) → 1 → 2 (heavy) → 3 (scaffold) → 4 → 5 → 6.
|
|
23
|
+
- **First move (phase 0 → 2):** read the doc; extract scope, locked decisions,
|
|
24
|
+
and the feature list; order it into **thin vertical slices** (one end-to-end
|
|
25
|
+
path first, not all-models-then-all-views). Phase 3 stands up that first slice.
|
|
26
|
+
|
|
27
|
+
## How It Works
|
|
28
|
+
|
|
29
|
+
1. Run the `orch-pipeline` engine with the settings above.
|
|
30
|
+
2. **Reuse the existing GAN harness** instead of hand-rolling an iterate loop:
|
|
31
|
+
- Translate the SDD into `gan-harness/spec.md` + `gan-harness/eval-rubric.md`
|
|
32
|
+
(this stands in for what `gan-planner` would generate — you already have the spec).
|
|
33
|
+
- Drive the build with `/gan-build "<one-line brief>" --skip-planner`
|
|
34
|
+
(defaults: `--max-iterations 15`, `--pass-threshold 7.0`,
|
|
35
|
+
`--eval-mode playwright`; use `--eval-mode code-only` for non-UI slices).
|
|
36
|
+
- That command runs the `gan-generator` → `gan-evaluator` loop and writes
|
|
37
|
+
`gan-harness/feedback/feedback-NNN.md` until the score passes or plateaus.
|
|
38
|
+
3. Stop at **Gate 1** (slice plan) and **Gate 2** (pre-commit). Commit the
|
|
39
|
+
scaffold and each slice as separate `feat:` commits.
|
|
40
|
+
4. Add `security-reviewer` for any slice touching a security trigger.
|
|
41
|
+
|
|
42
|
+
## Example
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
orch-build-mvp: civicpulse/docs/SDD-v0.6.md
|
|
46
|
+
→ read SDD → slice list (vertical) → scaffold slice 1 [GATE 1: approve]
|
|
47
|
+
→ /gan-build --skip-planner (generator → evaluator loop) scores vs spec → review
|
|
48
|
+
→ commit feat: [GATE 2: confirm] → next slice
|
|
49
|
+
```
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orch-change-feature
|
|
3
|
+
description: Orchestrate altering an existing, working feature to new desired behavior — update its tests to the new spec, change the implementation to match, review, and gated commit. Use when behavior is not broken but should be different.
|
|
4
|
+
metadata:
|
|
5
|
+
origin: ECC
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# orch-change-feature
|
|
9
|
+
|
|
10
|
+
Actor · action · target: **orch · change · feature**. Thin wrapper over the
|
|
11
|
+
shared engine in [`orch-pipeline`](../orch-pipeline/SKILL.md).
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
|
|
15
|
+
- An existing feature **works**, but the desired behavior is different ("change",
|
|
16
|
+
"adjust", "make it also …", "instead of X do Y").
|
|
17
|
+
- Distinguish from siblings:
|
|
18
|
+
- **not** broken → not `orch-fix-defect` (no bug to reproduce).
|
|
19
|
+
- **not** new → not `orch-add-feature` (the capability already exists).
|
|
20
|
+
|
|
21
|
+
## Operation settings
|
|
22
|
+
|
|
23
|
+
- **Default size floor:** small — most tweaks are a function or two.
|
|
24
|
+
- **Phase mask:** 0 → (1 only if the new behavior needs research) → light 2 →
|
|
25
|
+
4 → 5 → 6.
|
|
26
|
+
- **First move (phase 4):** update the *existing* tests to express the new
|
|
27
|
+
desired behavior, then change the implementation until they pass. Changing the
|
|
28
|
+
tests first is what separates a tweak from a fix.
|
|
29
|
+
|
|
30
|
+
## How It Works
|
|
31
|
+
|
|
32
|
+
1. Run the `orch-pipeline` engine with the settings above.
|
|
33
|
+
2. Keep the plan light — only `standard`+ size warrants the full `planner` pass.
|
|
34
|
+
3. Stop at **Gate 1** (plan / changed-test approval) and **Gate 2** (pre-commit).
|
|
35
|
+
4. Add `security-reviewer` if the change touches a security trigger.
|
|
36
|
+
|
|
37
|
+
## Example
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
orch-change-feature: make nws-poller alert at 2 warnings instead of 3
|
|
41
|
+
→ update threshold tests to new spec → change impl to green
|
|
42
|
+
→ code-review → commit [GATE 2: confirm]
|
|
43
|
+
```
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orch-fix-defect
|
|
3
|
+
description: Orchestrate fixing a bug — reproduce it as a failing regression test, fix to green, review, and gated commit — by delegating each phase to the matching ECC agent. Use when existing behavior is broken or wrong.
|
|
4
|
+
metadata:
|
|
5
|
+
origin: ECC
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# orch-fix-defect
|
|
9
|
+
|
|
10
|
+
Actor · action · target: **orch · fix · defect**. Thin wrapper over the shared
|
|
11
|
+
engine in [`orch-pipeline`](../orch-pipeline/SKILL.md).
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
|
|
15
|
+
- Something is **broken**: wrong output, an error, a crash, a regression.
|
|
16
|
+
- Distinguish from siblings:
|
|
17
|
+
- behavior is correct but you want it different → `orch-change-feature`.
|
|
18
|
+
- the capability does not exist yet → `orch-add-feature`.
|
|
19
|
+
|
|
20
|
+
## Operation settings
|
|
21
|
+
|
|
22
|
+
- **Default size floor:** small (often trivial).
|
|
23
|
+
- **Phase mask:** 0 → (light 2 only if root cause is non-obvious or standard+) →
|
|
24
|
+
4 → 5 → 6. Research (1) is usually skipped.
|
|
25
|
+
- **First move (phase 4):** reproduce the bug as a **new failing** test
|
|
26
|
+
(regression test), then fix until it goes green. Proving the bug exists first
|
|
27
|
+
is what separates a fix from a tweak.
|
|
28
|
+
|
|
29
|
+
## How It Works
|
|
30
|
+
|
|
31
|
+
1. Run the `orch-pipeline` engine with the settings above.
|
|
32
|
+
2. If the root cause is unclear, scope it with `code-explorer` before the red
|
|
33
|
+
test; escalate build breaks to `build-error-resolver` / `/build-fix`.
|
|
34
|
+
3. Stop at **Gate 1** (only if a plan was produced) and **Gate 2** (pre-commit).
|
|
35
|
+
4. Add `security-reviewer` if the defect sits in a security-sensitive path.
|
|
36
|
+
|
|
37
|
+
## Example
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
orch-fix-defect: poller crashes on empty NWS response
|
|
41
|
+
→ write failing test reproducing the crash → fix to green
|
|
42
|
+
→ code-review → commit [GATE 2: confirm] (commit: fix:)
|
|
43
|
+
```
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orch-pipeline
|
|
3
|
+
description: Shared orchestration engine for the orch-* skill family. Defines the gated Research-Plan-TDD-Review-Commit pipeline, the size classifier, the agent map, and the two human gates that the orch-* operation skills delegate to. Not usually invoked directly. Not usually invoked directly; it applies when an orch-* skill delegates its gated Research-Plan-TDD-Review-Commit pipeline.
|
|
4
|
+
metadata:
|
|
5
|
+
origin: ECC
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Orchestrator Pipeline (shared engine)
|
|
9
|
+
|
|
10
|
+
The `orch-*` skills are thin wrappers. They do not re-implement any work — they
|
|
11
|
+
classify the request, choose which phases of *this* pipeline run, and delegate
|
|
12
|
+
each phase to an existing ECC agent or command. This file is that pipeline.
|
|
13
|
+
|
|
14
|
+
> Invoke an operation skill (`orch-add-feature`, `orch-fix-defect`, …) rather
|
|
15
|
+
> than this engine directly. This file is the reference they point at.
|
|
16
|
+
|
|
17
|
+
## When to Use
|
|
18
|
+
|
|
19
|
+
- Loaded indirectly whenever an `orch-*` operation skill runs.
|
|
20
|
+
- Read directly only when adding a new operation to the family or tuning the
|
|
21
|
+
shared phases, gates, or agent map.
|
|
22
|
+
|
|
23
|
+
## The operation family
|
|
24
|
+
|
|
25
|
+
| Skill | Operation | Trigger | First move |
|
|
26
|
+
|-------|-----------|---------|------------|
|
|
27
|
+
| `orch-add-feature` | feature | capability does not exist yet | research + plan a new slice |
|
|
28
|
+
| `orch-change-feature` | tweak | works, but desired behavior differs | amend existing behavior *and its tests* |
|
|
29
|
+
| `orch-fix-defect` | fix | broken; behavior is wrong | reproduce as a failing test, then fix |
|
|
30
|
+
| `orch-refine-code` | refactor | behavior stays, structure improves | restructure while keeping tests green |
|
|
31
|
+
| `orch-build-mvp` | mvp | bootstrap from a design/spec doc | ingest doc → vertical slices |
|
|
32
|
+
|
|
33
|
+
> These wrappers **compose** existing ECC commands rather than replace them:
|
|
34
|
+
> `/feature-dev`, `/plan`, `/code-review`, `/build-fix`, `/refactor-clean`, and
|
|
35
|
+
> `/gan-build`, plus the `tdd-workflow` skill. The orch-* family adds the shared
|
|
36
|
+
> size classifier and the two gates
|
|
37
|
+
> on top of them, so one umbrella covers all five operations consistently.
|
|
38
|
+
|
|
39
|
+
## Step 0 — Classify size (right-sizing)
|
|
40
|
+
|
|
41
|
+
Ceremony scales to blast radius. Score the request on three signals, take the
|
|
42
|
+
**highest** tier any signal reaches, and state the result in one line so the user
|
|
43
|
+
can override:
|
|
44
|
+
|
|
45
|
+
| Tier | Files touched | New dependency / contract | Design ambiguity | Phases that run |
|
|
46
|
+
|------|---------------|---------------------------|------------------|-----------------|
|
|
47
|
+
| trivial | 1, a few lines | none | none — the change is obvious | 4 → 5 → 6 |
|
|
48
|
+
| small | 1 file / 1 function | none | clear once you read the code | (1 light) → 4 → 5 → 6 |
|
|
49
|
+
| standard | 2–5 files | maybe a new internal module | one real choice to make | 1 → 2 → 4 → 5 → 6 |
|
|
50
|
+
| large | many / cross-cutting | new external dep, public API, or a spec doc | multiple open questions | 1 → 2 → (3) → 4 → 5 → 6 |
|
|
51
|
+
|
|
52
|
+
Phase 0 (Intake) always runs and is omitted from the mask column above. The
|
|
53
|
+
tie-breaker: anything touching a security trigger (below) or a public API /
|
|
54
|
+
contract is **at least** standard, regardless of file count.
|
|
55
|
+
|
|
56
|
+
## The phases
|
|
57
|
+
|
|
58
|
+
Each phase delegates — it does not do the work inline.
|
|
59
|
+
|
|
60
|
+
- **0. Intake** — restate the request. For `orch-build-mvp`, read the spec/design
|
|
61
|
+
doc and extract scope, locked decisions, and a feature list.
|
|
62
|
+
- **1. Research & Reuse** — per `rules/common/development-workflow.md`: `gh search repos` /
|
|
63
|
+
`gh search code`, then Context7 / vendor docs, then package registries, then
|
|
64
|
+
Exa. Prefer adopting a proven implementation over net-new code.
|
|
65
|
+
- **2. Plan** — delegate to the `planner` agent (or `architect` /
|
|
66
|
+
`code-architect` for structural decisions). Output a `task_list` ordered as
|
|
67
|
+
thin vertical slices. → **GATE 1.**
|
|
68
|
+
- **3. Scaffold** — `orch-build-mvp` only: stand up the first end-to-end slice.
|
|
69
|
+
- **4. Implement (TDD)** — drive each task through the `tdd-guide` agent (or the `tdd-workflow` skill):
|
|
70
|
+
red → green → refactor. Honor the operation's first-move rule.
|
|
71
|
+
- **5. Review** — `code-reviewer` agent / `/code-review`. Add `security-reviewer`
|
|
72
|
+
whenever the diff touches a security trigger (below).
|
|
73
|
+
- **6. Commit** — conventional commits (`feat:` / `fix:` / `refactor:` / …), one
|
|
74
|
+
per logical chunk. → **GATE 2.**
|
|
75
|
+
|
|
76
|
+
## The two gates
|
|
77
|
+
|
|
78
|
+
This family is **gated, not autonomous**:
|
|
79
|
+
|
|
80
|
+
1. **GATE 1 — after Plan.** Present the `task_list`; do not write implementation
|
|
81
|
+
code until the user approves.
|
|
82
|
+
2. **GATE 2 — before Commit.** Present the diff summary and proposed messages;
|
|
83
|
+
do not commit until the user confirms.
|
|
84
|
+
|
|
85
|
+
Everything between the gates flows without stopping.
|
|
86
|
+
|
|
87
|
+
## Agent / command map
|
|
88
|
+
|
|
89
|
+
| Phase | Primary | Fallback / escalation |
|
|
90
|
+
|-------|---------|----------------------|
|
|
91
|
+
| Intake / understand | `code-explorer` | trace existing paths before a tweak, fix, or refactor |
|
|
92
|
+
| Plan | `planner` | `architect`, `code-architect` for structural calls |
|
|
93
|
+
| Implement | `tdd-guide` (or `tdd-workflow` skill) | `build-error-resolver` / `/build-fix` on build breaks |
|
|
94
|
+
| Review | `code-reviewer` / `/code-review` | language reviewer (`python-reviewer`, `typescript-reviewer`, …) |
|
|
95
|
+
| Security | `security-reviewer` | — |
|
|
96
|
+
| MVP inner loop | `/gan-build "<brief>" --skip-planner` | drives `gan-generator` → `gan-evaluator`; tune `--max-iterations` / `--pass-threshold` |
|
|
97
|
+
|
|
98
|
+
Match the language reviewer to the repo (see the repo's own `CLAUDE.md`).
|
|
99
|
+
|
|
100
|
+
## Security-review trigger
|
|
101
|
+
|
|
102
|
+
Pull in `security-reviewer` when the diff touches any of: authentication or
|
|
103
|
+
authorization, user-input handling, database queries, file-system paths,
|
|
104
|
+
external API calls, cryptography, or secrets / credentials. (Per `rules/common/security.md`.)
|
|
105
|
+
|
|
106
|
+
## Handoff artifacts
|
|
107
|
+
|
|
108
|
+
The pipeline carries no hidden state — the planning docs *are* the handoff:
|
|
109
|
+
|
|
110
|
+
- `task_list` (from Plan) drives the Implement loop.
|
|
111
|
+
- Larger work may also emit PRD / architecture / system_design under the repo's
|
|
112
|
+
`docs/` per `rules/common/development-workflow.md`.
|
|
113
|
+
- Review findings (CRITICAL / HIGH) must be resolved before Gate 2.
|
|
114
|
+
|
|
115
|
+
## Verification
|
|
116
|
+
|
|
117
|
+
- size tier was stated and matched the work
|
|
118
|
+
- Gate 1 (plan) and Gate 2 (commit) were both honored
|
|
119
|
+
- `security-reviewer` ran iff a security trigger was touched
|
|
120
|
+
- commits are conventional and scoped to one logical change
|
|
121
|
+
- new / changed behavior has tests; coverage ≥ 80% per `rules/common/testing.md`
|