@punks/cli 1.0.7 → 2.0.0-beta.1

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.
Files changed (42) hide show
  1. package/AGENTS.md +4 -5
  2. package/README.md +2 -2
  3. package/dist/data/catalog/hooks.ts +7 -0
  4. package/dist/data/catalog/lint.ts +7 -21
  5. package/dist/data/catalog/packs.ts +263 -21
  6. package/dist/data/catalog/skills.ts +352 -38
  7. package/dist/data/hooks/require-tests-for-pr.mjs +206 -0
  8. package/dist/data/hooks.test.ts +29 -0
  9. package/dist/data/scripts/sync-subagents.mjs +64 -6
  10. package/dist/data/subagents/manifest.mjs +15 -49
  11. package/dist/index.js +14368 -3445
  12. package/dist/skills/agnostic/debug/debugging-phase/SKILL.md +87 -0
  13. package/dist/skills/agnostic/docs/docs-ingest-phase/SKILL.md +87 -0
  14. package/dist/skills/agnostic/docs/docs-ingest-phase/agents/openai.yaml +4 -0
  15. package/dist/skills/agnostic/docs/{docs-maintenance → docs-ingest-phase}/references/concept-pages.md +1 -1
  16. package/dist/skills/agnostic/docs/{docs-maintenance → docs-ingest-phase}/references/flow-pages.md +1 -1
  17. package/dist/skills/agnostic/docs/docs-ingest-phase/references/fumadocs-routing.md +88 -0
  18. package/dist/skills/agnostic/docs/docs-ingest-phase/references/repo-docs.md +38 -0
  19. package/dist/skills/agnostic/docs/docs-ingest-phase/references/wiki-ingest.md +131 -0
  20. package/dist/skills/agnostic/planning/create-plan/SKILL.md +11 -9
  21. package/dist/skills/agnostic/planning/create-spec/SKILL.md +20 -18
  22. package/dist/skills/agnostic/planning/delivery-phase/SKILL.md +82 -0
  23. package/dist/skills/agnostic/planning/goalify/EXAMPLES.md +72 -0
  24. package/dist/skills/agnostic/planning/goalify/SKILL.md +97 -0
  25. package/dist/skills/agnostic/planning/implement-spec/SKILL.md +3 -3
  26. package/dist/skills/agnostic/planning/implement-spec/assets/IMPLEMENTATION-NOTES-TEMPLATE.md +6 -0
  27. package/dist/skills/agnostic/planning/implement-spec/references/lifecycle.md +23 -2
  28. package/dist/skills/agnostic/planning/resolve-debt-phase/SKILL.md +87 -0
  29. package/dist/skills/agnostic/requirements/requirements-grill/SKILL.md +4 -3
  30. package/dist/skills/agnostic/requirements/requirements-grill/references/artifact-output.md +56 -2
  31. package/dist/skills/agnostic/requirements/requirements-grill/references/grilling-flow.md +16 -4
  32. package/dist/skills/agnostic/requirements/requirements-grill/references/wiki-output.md +6 -2
  33. package/dist/skills/agnostic/requirements/requirements-phase/SKILL.md +67 -0
  34. package/dist/skills/agnostic/research/review-phase/SKILL.md +99 -0
  35. package/package.json +17 -7
  36. package/dist/skills/agnostic/docs/docs-maintenance/SKILL.md +0 -193
  37. package/dist/skills/agnostic/docs/docs-maintenance/agents/openai.yaml +0 -4
  38. package/docs/README.md +0 -35
  39. package/docs/harness-intelligence-grill-log.md +0 -39
  40. package/docs/harness-intelligence-grill-status.md +0 -25
  41. package/docs/reference/dp-requirements.md +0 -225
  42. package/docs/runbooks/dp-cli-scaffolding.md +0 -261
package/AGENTS.md CHANGED
@@ -1,10 +1,9 @@
1
- ## CLI Guidance
1
+ ## CLI App Guidance
2
2
 
3
3
  Primary skills here: `effect-authoring`, `simplify`.
4
4
 
5
- This repo owns the `punks` CLI surface, repo detection flow, and scaffold-spec orchestration. Keep prompt/spec resolution logic in this repository; do not leak consumer-repo business logic into the CLI itself.
6
- If you need Effect details, search:
5
+ This app owns the `punks`/`dp` executable, repo detection flow, local scaffold application, bundled baseline fallback, update/diff ergonomics, and release/baseline publishing scripts. Preserve current CLI behavior during monorepo work.
7
6
 
8
- - `opensrc/repos/github.com/Effect-TS/effect/packages/effect`
7
+ Keep consumer-repo product logic out of the CLI. The future backend owns registry, provenance, auth, telemetry, and artifact access; the CLI remains the local scanner, cache, prompt/skill/hook placer, and filesystem writer.
9
8
 
10
- If work here changes operator workflow, setup, or AI scaffolding behavior, update `docs/README.md` and the relevant runbook in the same task.
9
+ If work here changes operator workflow, setup, or AI scaffolding behavior, update `docs/README.md` and `docs/runbooks/dp-cli-scaffolding.md` in the same task.
package/README.md CHANGED
@@ -42,7 +42,7 @@ Use `--baseline bundled` to force the npm-shipped baseline, or `--refresh-baseli
42
42
 
43
43
  Language packs are detected separately from framework packs. TypeScript is selected when scanned manifests depend on `typescript` or when nested source files include `.ts` / `.tsx`; Python is selected from nested `.py` files. Root-level config files and vendor, virtualenv, generated, scaffold, docs, examples, `scripts`, `opensrc`, cache, and build output directories are ignored.
44
44
 
45
- The default subagent manifest includes Python templates that combine the language skills into `python-app`, `python-async`, and `python-testing` specialists.
45
+ The generated subagent manifest is repo-shaped from selected packs and prompt specs. Python specialists are generated only when the Python language pack is selected.
46
46
 
47
47
  To install only the local `dp-cli` operator skill from the public skills repo checkout:
48
48
 
@@ -80,7 +80,7 @@ bun run release:publish
80
80
 
81
81
  `bun run baseline:publish` builds the current scaffold baseline, creates or updates the `baseline/stable/<date>-<sha>` GitHub release, and uploads the baseline manifest plus tarball. Use it when scaffold data changes but the npm executable does not need a new version.
82
82
 
83
- `bun run release:publish` publishes the current `package.json` version to npm, updates the `latest` and `next` dist-tags, and pushes the matching `v<version>` git tag. Commit and push the version bump before running it; the script refuses dirty worktrees and existing tags that point at another commit.
83
+ `bun run release:publish` publishes the current `package.json` version to npm, updates the `latest` dist-tag, also updates `next` for latest releases, and pushes the matching `v<version>` git tag. Commit and push the version bump before running it; the script refuses dirty worktrees and existing tags that point at another commit. Set `NPM_TAG=beta` for beta prereleases without moving `latest`.
84
84
 
85
85
  Before npm releases, authenticate against the public npm registry:
86
86
 
@@ -15,4 +15,11 @@ export const hookCatalog = [
15
15
  "Shared hook that auto-formats edited JS/TS/JSON files and lint-checks product files after tool use.",
16
16
  sourcePath: "hooks/format-edited-file.mjs",
17
17
  },
18
+ {
19
+ id: "require-tests-for-pr",
20
+ harness: "shared",
21
+ outputPath: ".agents/hooks/require-tests-for-pr.mjs",
22
+ description: "Shared hook that blocks PR creation while tests are failing.",
23
+ sourcePath: "hooks/require-tests-for-pr.mjs",
24
+ },
18
25
  ] as const satisfies ReadonlyArray<HookDefinition>;
@@ -133,22 +133,17 @@ export const lintCatalog = [
133
133
  ],
134
134
  settings: {},
135
135
  rules: {
136
- "react-you-might-not-need-an-effect-js/no-adjust-state-on-prop-change":
137
- "error",
136
+ "react-you-might-not-need-an-effect-js/no-adjust-state-on-prop-change": "error",
138
137
  "react-you-might-not-need-an-effect-js/no-chain-state-updates": "error",
139
138
  "react-you-might-not-need-an-effect-js/no-derived-state": "error",
140
139
  "react-you-might-not-need-an-effect-js/no-empty-effect": "error",
141
140
  "react-you-might-not-need-an-effect-js/no-event-handler": "error",
142
141
  "react-you-might-not-need-an-effect-js/no-initialize-state": "error",
143
142
  "react-you-might-not-need-an-effect-js/no-pass-data-to-parent": "error",
144
- "react-you-might-not-need-an-effect-js/no-pass-live-state-to-parent":
145
- "error",
146
- "react-you-might-not-need-an-effect-js/no-reset-all-state-on-prop-change":
147
- "error",
143
+ "react-you-might-not-need-an-effect-js/no-pass-live-state-to-parent": "error",
144
+ "react-you-might-not-need-an-effect-js/no-reset-all-state-on-prop-change": "error",
148
145
  },
149
- requiredDevDependencies: [
150
- "eslint-plugin-react-you-might-not-need-an-effect",
151
- ],
146
+ requiredDevDependencies: ["eslint-plugin-react-you-might-not-need-an-effect"],
152
147
  placement: sharedReactPlacement,
153
148
  },
154
149
  {
@@ -258,24 +253,15 @@ export const lintCatalog = [
258
253
  const stableJson = (value: unknown): string => JSON.stringify(value);
259
254
 
260
255
  const placementKeyOf = (placement: LintPlacementDefinition): string =>
261
- [
262
- placement.recommendedConfigFile,
263
- ...placement.recommendedFiles,
264
- ].join("::");
256
+ [placement.recommendedConfigFile, ...placement.recommendedFiles].join("::");
265
257
 
266
258
  export const validateLintCatalog = (
267
259
  catalog: ReadonlyArray<LintAssetDefinition>,
268
260
  ): ReadonlyArray<LintAssetDefinition> => {
269
261
  const seenIds = new Set<string>();
270
262
  const seenRules = new Map<string, { readonly assetId: string; readonly value: string }>();
271
- const seenSettings = new Map<
272
- string,
273
- { readonly assetId: string; readonly value: string }
274
- >();
275
- const seenJsPlugins = new Map<
276
- string,
277
- { readonly assetId: string; readonly specifier: string }
278
- >();
263
+ const seenSettings = new Map<string, { readonly assetId: string; readonly value: string }>();
264
+ const seenJsPlugins = new Map<string, { readonly assetId: string; readonly specifier: string }>();
279
265
 
280
266
  for (const asset of catalog) {
281
267
  if (seenIds.has(asset.id)) {
@@ -2,7 +2,7 @@ import type { PackCategory, PackId } from "../../core/models";
2
2
  import type { LintAssetId } from "./lint";
3
3
  import type { SkillId } from "./skills";
4
4
 
5
- export type PackHookId = "format-edited-file";
5
+ export type PackHookId = "format-edited-file" | "require-tests-for-pr";
6
6
  export type PackPromptSurfaceId =
7
7
  | "shared-agents"
8
8
  | "root-prompt-spec"
@@ -23,24 +23,266 @@ export interface PackCatalogEntry {
23
23
  }
24
24
 
25
25
  export const packCatalog = [
26
- { id: "backend", category: "surface", triggerPackages: [], description: "Backend pack: domain structure, recoverable actions, and logging.", skills: ["backend-domain-structure", "backend-recoverable-actions", "logging-best-practices"], lintAssets: [], hooks: [], promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"], promptDetails: ["shared backend domain baseline", "workspace backend action/recovery guidance", "workspace logging/observability guidance"] },
27
- { id: "better-auth", category: "detected", triggerPackages: ["better-auth"], description: "Better Auth guidance pack.", skills: ["better-auth-best-practices"], lintAssets: [], hooks: [], promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"], promptDetails: ["shared auth guardrails", "workspace auth boundaries"] },
28
- { id: "debug", category: "default", triggerPackages: [], description: "Default debug pack: debug-agent runtime-evidence workflow.", skills: ["debug-agent"], lintAssets: [], hooks: [], promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"], promptDetails: ["shared runtime debugging baseline", "workspace evidence-first debugging workflow"] },
29
- { id: "docs", category: "default", triggerPackages: [], description: "Default docs pack: docs-maintenance.", skills: ["docs-maintenance"], lintAssets: [], hooks: [], promptSurfaces: ["shared-agents", "root-prompt-spec", "docs-prompt-spec"], promptDetails: ["shared docs baseline", "docs scope spec"] },
30
- { id: "drizzle", category: "detected", triggerPackages: ["drizzle-kit", "drizzle-orm"], description: "Drizzle guidance pack.", skills: [], lintAssets: [], hooks: [], promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"], promptDetails: ["shared data-layer baseline", "workspace db flow rules"] },
31
- { id: "effect", category: "detected", triggerPackages: ["effect", "@effect/"], description: "Effect guidance pack family.", skills: ["effect-authoring", "effect-best-practices", "effect-backend-structure", "effect-recoverable-actions"], lintAssets: ["effect-no-barrel-imports"], hooks: [], promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"], promptDetails: ["shared effect authoring baseline", "workspace service/layer rules"] },
32
- { id: "elysia", category: "detected", triggerPackages: ["elysia"], description: "Elysia guidance pack.", skills: ["elysiajs"], lintAssets: [], hooks: [], promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"], promptDetails: ["shared api-server baseline", "workspace route/plugin rules"] },
33
- { id: "frontend", category: "surface", triggerPackages: [], description: "Frontend pack: agent-browser, design taste, and frontend domain structure.", skills: ["agent-browser", "design-taste-frontend", "frontend-domain-structure"], lintAssets: [], hooks: [], promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"], promptDetails: ["shared product-ui baseline", "workspace UX/browser guidance", "workspace frontend domain boundaries"] },
34
- { id: "nextjs", category: "detected", triggerPackages: ["next"], description: "Next.js guidance pack.", skills: ["next-best-practices", "next-cache-components"], lintAssets: ["next-core"], hooks: [], promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"], promptDetails: ["shared app-router baseline", "workspace next rendering rules"] },
35
- { id: "planning", category: "default", triggerPackages: [], description: "Default planning pack: grill-me, create-spec, create-plan, implement-spec.", skills: ["grill-me", "create-spec", "create-plan", "implement-spec"], lintAssets: [], hooks: [], promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"], promptDetails: ["shared planning baseline", "workspace plan/spec execution rules"] },
36
- { id: "quality", category: "default", triggerPackages: [], description: "Default quality pack: tdd, simplify.", skills: ["tdd", "simplify"], lintAssets: ["vitest-core"], hooks: [], promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"], promptDetails: ["shared change-quality baseline", "workspace test/refactor expectations"] },
37
- { id: "react", category: "detected", triggerPackages: ["react", "react-dom"], description: "React guidance pack.", skills: ["async-react-patterns", "vercel-composition-patterns", "vercel-react-best-practices"], lintAssets: ["react-core", "react-hooks", "react-you-might-not-need-an-effect"], hooks: [], promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"], promptDetails: ["shared react structure baseline", "workspace react composition rules"] },
38
- { id: "research", category: "default", triggerPackages: [], description: "Default research pack: parallel-research.", skills: ["parallel-research"], lintAssets: [], hooks: [], promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"], promptDetails: ["shared investigation baseline", "workspace research handoff rules"] },
39
- { id: "requirements", category: "default", triggerPackages: [], description: "Default requirements pack: requirements-grill, write-backlog.", skills: ["requirements-grill", "write-backlog"], lintAssets: [], hooks: [], promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"], promptDetails: ["shared requirements baseline", "workspace backlog shaping rules"] },
40
- { id: "subagents", category: "default", triggerPackages: [], description: "Default subagents pack: swarm-planner.", skills: ["swarm-planner"], lintAssets: [], hooks: [], promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec", "subagent-manifest"], promptDetails: ["shared delegation baseline", "workspace ownership handoffs", "subagent manifest scaffold"] },
41
- { id: "tanstack-query", category: "detected", triggerPackages: ["@tanstack/react-query"], description: "TanStack Query guidance pack.", skills: ["tanstack-query"], lintAssets: ["tanstack-query-core"], hooks: [], promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"], promptDetails: ["shared tanstack query baseline", "workspace server-state rules"] },
42
- { id: "trpc", category: "detected", triggerPackages: ["@trpc/"], description: "tRPC guidance pack.", skills: [], lintAssets: [], hooks: [], promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"], promptDetails: ["shared contract-first baseline", "workspace client/server boundaries"] },
43
- { id: "turborepo", category: "detected", triggerPackages: ["turbo"], description: "Turborepo guidance pack.", skills: ["turborepo"], lintAssets: [], hooks: [], promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"], promptDetails: ["shared monorepo baseline", "workspace task boundary rules"] },
44
- { id: "python", category: "language", triggerPackages: [], description: "Shared Python language pack for async, style, structure, testing, and design guidance.", skills: ["async-python-patterns", "python-code-style", "python-design-patterns", "python-project-structure", "python-testing-patterns"], lintAssets: [], hooks: [], promptSurfaces: [], promptDetails: [] },
45
- { id: "typescript", category: "language", triggerPackages: ["typescript"], description: "Shared JavaScript / TypeScript language pack for hook and language-level scaffold assets.", skills: ["quality-types"], lintAssets: [], hooks: ["format-edited-file"], promptSurfaces: [], promptDetails: [] },
26
+ {
27
+ id: "backend",
28
+ category: "surface",
29
+ triggerPackages: [],
30
+ description: "Backend pack: domain structure, recoverable actions, and logging.",
31
+ skills: ["backend-domain-structure", "backend-recoverable-actions", "logging-best-practices"],
32
+ lintAssets: [],
33
+ hooks: [],
34
+ promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"],
35
+ promptDetails: [
36
+ "shared backend domain baseline",
37
+ "workspace backend action/recovery guidance",
38
+ "workspace logging/observability guidance",
39
+ ],
40
+ },
41
+ {
42
+ id: "better-auth",
43
+ category: "detected",
44
+ triggerPackages: ["better-auth"],
45
+ description: "Better Auth guidance pack.",
46
+ skills: ["better-auth-best-practices"],
47
+ lintAssets: [],
48
+ hooks: [],
49
+ promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"],
50
+ promptDetails: ["shared auth guardrails", "workspace auth boundaries"],
51
+ },
52
+ {
53
+ id: "debug",
54
+ category: "default",
55
+ triggerPackages: [],
56
+ description: "Default debug pack: debugging phase and debug-agent runtime-evidence workflow.",
57
+ skills: ["debugging-phase", "debug-agent"],
58
+ lintAssets: [],
59
+ hooks: [],
60
+ promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"],
61
+ promptDetails: [
62
+ "shared runtime debugging baseline",
63
+ "workspace evidence-first debugging workflow",
64
+ ],
65
+ },
66
+ {
67
+ id: "docs",
68
+ category: "default",
69
+ triggerPackages: [],
70
+ description: "Default docs pack: docs-ingest-phase.",
71
+ skills: ["docs-ingest-phase"],
72
+ lintAssets: [],
73
+ hooks: [],
74
+ promptSurfaces: ["shared-agents", "root-prompt-spec", "docs-prompt-spec"],
75
+ promptDetails: ["shared docs baseline", "docs scope spec"],
76
+ },
77
+ {
78
+ id: "drizzle",
79
+ category: "detected",
80
+ triggerPackages: ["drizzle-kit", "drizzle-orm"],
81
+ description: "Drizzle guidance pack.",
82
+ skills: [],
83
+ lintAssets: [],
84
+ hooks: [],
85
+ promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"],
86
+ promptDetails: ["shared data-layer baseline", "workspace db flow rules"],
87
+ },
88
+ {
89
+ id: "effect",
90
+ category: "detected",
91
+ triggerPackages: ["effect", "@effect/"],
92
+ description: "Effect guidance pack family.",
93
+ skills: [
94
+ "effect-authoring",
95
+ "effect-best-practices",
96
+ "effect-backend-structure",
97
+ "effect-recoverable-actions",
98
+ ],
99
+ lintAssets: ["effect-no-barrel-imports"],
100
+ hooks: [],
101
+ promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"],
102
+ promptDetails: ["shared effect authoring baseline", "workspace service/layer rules"],
103
+ },
104
+ {
105
+ id: "elysia",
106
+ category: "detected",
107
+ triggerPackages: ["elysia"],
108
+ description: "Elysia guidance pack.",
109
+ skills: ["elysiajs"],
110
+ lintAssets: [],
111
+ hooks: [],
112
+ promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"],
113
+ promptDetails: ["shared api-server baseline", "workspace route/plugin rules"],
114
+ },
115
+ {
116
+ id: "frontend",
117
+ category: "surface",
118
+ triggerPackages: [],
119
+ description: "Frontend pack: agent-browser, design taste, and frontend domain structure.",
120
+ skills: ["agent-browser", "design-taste-frontend", "frontend-domain-structure"],
121
+ lintAssets: [],
122
+ hooks: [],
123
+ promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"],
124
+ promptDetails: [
125
+ "shared product-ui baseline",
126
+ "workspace UX/browser guidance",
127
+ "workspace frontend domain boundaries",
128
+ ],
129
+ },
130
+ {
131
+ id: "nextjs",
132
+ category: "detected",
133
+ triggerPackages: ["next"],
134
+ description: "Next.js guidance pack.",
135
+ skills: ["next-best-practices", "next-cache-components"],
136
+ lintAssets: ["next-core"],
137
+ hooks: [],
138
+ promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"],
139
+ promptDetails: ["shared app-router baseline", "workspace next rendering rules"],
140
+ },
141
+ {
142
+ id: "planning",
143
+ category: "default",
144
+ triggerPackages: [],
145
+ description:
146
+ "Default planning pack: delivery phase, specs, plans, implementation, and debt resolution.",
147
+ skills: [
148
+ "delivery-phase",
149
+ "goalify",
150
+ "grill-me",
151
+ "create-spec",
152
+ "create-plan",
153
+ "implement-spec",
154
+ "resolve-debt-phase",
155
+ ],
156
+ lintAssets: [],
157
+ hooks: [],
158
+ promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"],
159
+ promptDetails: ["shared planning baseline", "workspace plan/spec execution rules"],
160
+ },
161
+ {
162
+ id: "quality",
163
+ category: "default",
164
+ triggerPackages: [],
165
+ description: "Default quality pack: tdd, simplify.",
166
+ skills: ["tdd", "simplify"],
167
+ lintAssets: ["vitest-core"],
168
+ hooks: [],
169
+ promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"],
170
+ promptDetails: ["shared change-quality baseline", "workspace test/refactor expectations"],
171
+ },
172
+ {
173
+ id: "react",
174
+ category: "detected",
175
+ triggerPackages: ["react", "react-dom"],
176
+ description: "React guidance pack.",
177
+ skills: ["async-react-patterns", "vercel-composition-patterns", "vercel-react-best-practices"],
178
+ lintAssets: ["react-core", "react-hooks", "react-you-might-not-need-an-effect"],
179
+ hooks: [],
180
+ promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"],
181
+ promptDetails: ["shared react structure baseline", "workspace react composition rules"],
182
+ },
183
+ {
184
+ id: "research",
185
+ category: "default",
186
+ triggerPackages: [],
187
+ description: "Default research pack: parallel research, review, and architecture inspection.",
188
+ skills: ["parallel-research", "review-phase", "improve-codebase-architecture"],
189
+ lintAssets: [],
190
+ hooks: [],
191
+ promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"],
192
+ promptDetails: ["shared investigation baseline", "workspace research handoff rules"],
193
+ },
194
+ {
195
+ id: "requirements",
196
+ category: "default",
197
+ triggerPackages: [],
198
+ description: "Default requirements pack: requirements phase, grill, and backlog authoring.",
199
+ skills: ["requirements-phase", "requirements-grill", "write-backlog"],
200
+ lintAssets: [],
201
+ hooks: [],
202
+ promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"],
203
+ promptDetails: ["shared requirements baseline", "workspace backlog shaping rules"],
204
+ },
205
+ {
206
+ id: "subagents",
207
+ category: "default",
208
+ triggerPackages: [],
209
+ description: "Default subagents pack: swarm-planner.",
210
+ skills: ["swarm-planner"],
211
+ lintAssets: [],
212
+ hooks: [],
213
+ promptSurfaces: [
214
+ "shared-agents",
215
+ "root-prompt-spec",
216
+ "workspace-prompt-spec",
217
+ "subagent-manifest",
218
+ ],
219
+ promptDetails: [
220
+ "shared delegation baseline",
221
+ "workspace ownership handoffs",
222
+ "subagent manifest scaffold",
223
+ ],
224
+ },
225
+ {
226
+ id: "tanstack-query",
227
+ category: "detected",
228
+ triggerPackages: ["@tanstack/react-query"],
229
+ description: "TanStack Query guidance pack.",
230
+ skills: ["tanstack-query"],
231
+ lintAssets: ["tanstack-query-core"],
232
+ hooks: [],
233
+ promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"],
234
+ promptDetails: ["shared tanstack query baseline", "workspace server-state rules"],
235
+ },
236
+ {
237
+ id: "trpc",
238
+ category: "detected",
239
+ triggerPackages: ["@trpc/"],
240
+ description: "tRPC guidance pack.",
241
+ skills: [],
242
+ lintAssets: [],
243
+ hooks: [],
244
+ promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"],
245
+ promptDetails: ["shared contract-first baseline", "workspace client/server boundaries"],
246
+ },
247
+ {
248
+ id: "turborepo",
249
+ category: "detected",
250
+ triggerPackages: ["turbo"],
251
+ description: "Turborepo guidance pack.",
252
+ skills: ["turborepo"],
253
+ lintAssets: [],
254
+ hooks: [],
255
+ promptSurfaces: ["shared-agents", "root-prompt-spec", "workspace-prompt-spec"],
256
+ promptDetails: ["shared monorepo baseline", "workspace task boundary rules"],
257
+ },
258
+ {
259
+ id: "python",
260
+ category: "language",
261
+ triggerPackages: [],
262
+ description:
263
+ "Shared Python language pack for async, style, structure, testing, and design guidance.",
264
+ skills: [
265
+ "async-python-patterns",
266
+ "python-code-style",
267
+ "python-design-patterns",
268
+ "python-project-structure",
269
+ "python-testing-patterns",
270
+ ],
271
+ lintAssets: [],
272
+ hooks: [],
273
+ promptSurfaces: [],
274
+ promptDetails: [],
275
+ },
276
+ {
277
+ id: "typescript",
278
+ category: "language",
279
+ triggerPackages: ["typescript"],
280
+ description:
281
+ "Shared JavaScript / TypeScript language pack for hook and language-level scaffold assets.",
282
+ skills: ["quality-types"],
283
+ lintAssets: [],
284
+ hooks: ["format-edited-file", "require-tests-for-pr"],
285
+ promptSurfaces: [],
286
+ promptDetails: [],
287
+ },
46
288
  ] as const satisfies ReadonlyArray<PackCatalogEntry>;