@juicesharp/rpiv-pi 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.
Files changed (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +178 -0
  3. package/agents/codebase-analyzer.md +121 -0
  4. package/agents/codebase-locator.md +107 -0
  5. package/agents/codebase-pattern-finder.md +207 -0
  6. package/agents/integration-scanner.md +97 -0
  7. package/agents/precedent-locator.md +130 -0
  8. package/agents/test-case-locator.md +121 -0
  9. package/agents/thoughts-analyzer.md +147 -0
  10. package/agents/thoughts-locator.md +138 -0
  11. package/agents/web-search-researcher.md +107 -0
  12. package/extensions/rpiv-core/agents.ts +312 -0
  13. package/extensions/rpiv-core/git-context.ts +81 -0
  14. package/extensions/rpiv-core/guidance.ts +213 -0
  15. package/extensions/rpiv-core/index.ts +275 -0
  16. package/extensions/rpiv-core/package-checks.ts +51 -0
  17. package/package.json +36 -0
  18. package/scripts/migrate.js +242 -0
  19. package/scripts/types.js +1 -0
  20. package/skills/annotate-guidance/SKILL.md +303 -0
  21. package/skills/annotate-guidance/examples/root-dotnet-clean-arch.md +38 -0
  22. package/skills/annotate-guidance/examples/root-nodejs-monorepo.md +42 -0
  23. package/skills/annotate-guidance/examples/subfolder-database-layer.md +81 -0
  24. package/skills/annotate-guidance/examples/subfolder-dotnet-application.md +64 -0
  25. package/skills/annotate-guidance/examples/subfolder-schemas-layer.md +50 -0
  26. package/skills/annotate-guidance/templates/root-architecture.md +46 -0
  27. package/skills/annotate-guidance/templates/subfolder-architecture.md +57 -0
  28. package/skills/annotate-inline/SKILL.md +299 -0
  29. package/skills/annotate-inline/examples/root-dotnet-clean-arch.md +38 -0
  30. package/skills/annotate-inline/examples/root-nodejs-monorepo.md +42 -0
  31. package/skills/annotate-inline/examples/subfolder-database-layer.md +81 -0
  32. package/skills/annotate-inline/examples/subfolder-dotnet-application.md +64 -0
  33. package/skills/annotate-inline/examples/subfolder-schemas-layer.md +50 -0
  34. package/skills/annotate-inline/templates/root-claude-md.md +46 -0
  35. package/skills/annotate-inline/templates/subfolder-claude-md.md +57 -0
  36. package/skills/code-review/SKILL.md +184 -0
  37. package/skills/commit/SKILL.md +65 -0
  38. package/skills/create-handoff/SKILL.md +91 -0
  39. package/skills/design/SKILL.md +416 -0
  40. package/skills/discover/SKILL.md +242 -0
  41. package/skills/explore/SKILL.md +261 -0
  42. package/skills/implement/SKILL.md +74 -0
  43. package/skills/migrate-to-guidance/SKILL.md +88 -0
  44. package/skills/outline-test-cases/SKILL.md +348 -0
  45. package/skills/outline-test-cases/templates/feature-meta.md +43 -0
  46. package/skills/outline-test-cases/templates/outline-readme.md +36 -0
  47. package/skills/plan/SKILL.md +281 -0
  48. package/skills/research/SKILL.md +304 -0
  49. package/skills/resume-handoff/SKILL.md +207 -0
  50. package/skills/revise/SKILL.md +242 -0
  51. package/skills/validate/SKILL.md +175 -0
  52. package/skills/write-test-cases/SKILL.md +322 -0
  53. package/skills/write-test-cases/examples/customer-auth-flow.md +50 -0
  54. package/skills/write-test-cases/examples/order-management-suite.md +57 -0
  55. package/skills/write-test-cases/examples/order-placement-flow.md +54 -0
  56. package/skills/write-test-cases/examples/team-management-flow.md +56 -0
  57. package/skills/write-test-cases/examples/team-management-suite.md +54 -0
  58. package/skills/write-test-cases/templates/coverage-map.md +64 -0
  59. package/skills/write-test-cases/templates/regression-suite.md +63 -0
  60. package/skills/write-test-cases/templates/test-case.md +65 -0
@@ -0,0 +1,348 @@
1
+ ---
2
+ name: outline-test-cases
3
+ description: Discover testable features via Frontend-First Discovery and create a folder outline under .rpiv/test-cases/ with per-feature metadata. Incremental runs use existing outlines as context for smarter discovery and diff-based checkpoints. Use before write-test-cases to map project scope.
4
+ argument-hint: [target-directory]
5
+ allowed-tools: Agent, Read, Write, Edit, Glob, Grep
6
+ ---
7
+
8
+ # Outline Test Cases
9
+
10
+ You are tasked with discovering all testable features in a project and creating a folder outline under `.rpiv/test-cases/`. Each feature gets its own folder with a `_meta.md` file containing discovered routes, endpoints, scope decisions, and domain context. A root `README.md` summarizes the full project outline. No test case content is generated — use `write-test-cases` per feature to fill the folders.
11
+
12
+ Two modes: **Fresh** (no existing outline — full discovery and checkpoint) and **Incremental** (existing outline found — discovery with prior context, diff-based checkpoint). Discovery always runs in both modes.
13
+
14
+ ## Initial Setup
15
+
16
+ When this command is invoked, respond with:
17
+ ```
18
+ I'll discover all testable features in this project and create a folder outline
19
+ under .rpiv/test-cases/. Let me check for existing outlines and analyze the codebase.
20
+ ```
21
+
22
+ Use the current working directory as the target project by default. If the user provides a specific directory path as an argument, use that instead.
23
+
24
+ ## Steps
25
+
26
+ ### Step 1: Read files & detect mode
27
+
28
+ - If the user mentions specific files (existing test cases, architecture docs, READMEs), read them FULLY first
29
+ - **IMPORTANT**: Use the Read tool WITHOUT limit/offset parameters to read entire files
30
+ - **CRITICAL**: Read these files yourself in the main context before invoking any agents
31
+
32
+ #### Mode Detection
33
+
34
+ Check for existing outline data:
35
+
36
+ 1. **Glob** for `**/_meta.md` with path set to `.rpiv/test-cases/` in the target directory (dot-prefixed directories must be targeted directly)
37
+ 2. If no `_meta.md` files found → **Fresh mode**. Proceed to Step 2.
38
+ 3. If `_meta.md` files found → **Incremental mode**. Read them ALL and extract:
39
+ - Existing feature list (names, slugs, modules, routes, endpoints)
40
+ - Scope exclusions from `## Scope Decisions` sections
41
+ - Previous checkpoint Q&A from `## Checkpoint History` sections
42
+ - Generated date from frontmatter
43
+
44
+ Report detected mode:
45
+ ```
46
+ [Fresh]: No existing outline found. Will run full discovery.
47
+ [Incremental]: Found [N] existing feature outlines from [generated date]. Will re-discover with prior context and highlight changes.
48
+ ```
49
+
50
+ ### Step 2: Discover features
51
+
52
+ First, detect the project's technology stack by checking for framework indicators (see Framework Detection Reference below).
53
+
54
+ Spawn parallel discovery agents using the Agent tool:
55
+ - Use the **codebase-locator** agent to find all registered routes, navigation menus, and page entry points
56
+ - Use the **codebase-locator** agent to find all frontend HTTP API call sites and which backend URLs they hit
57
+ - Use the **codebase-locator** agent to find all backend API controllers and route handlers
58
+ - Use the **test-case-locator** agent to find existing test cases in `.rpiv/test-cases/` to avoid duplicates
59
+
60
+ Include in your prompts for the three codebase-locator agents:
61
+ - Target directory and detected framework
62
+ - In **Incremental mode**: summary of previously discovered features (names, routes, endpoints) from existing `_meta.md` files — ask agents to flag new items and note any that no longer exist
63
+ - If **scope exclusions** were loaded in Step 1: list them and instruct agents to exclude matching results
64
+
65
+ While agents run, read `.gitignore` yourself to understand exclusion rules.
66
+
67
+ ### Step 3: Determine feature targets
68
+
69
+ **IMPORTANT**: Wait for ALL agents from Step 2 to complete before proceeding.
70
+
71
+ #### Cross-Reference (both modes)
72
+
73
+ Cross-reference findings from all 4 agents:
74
+
75
+ **Feature identification** — Build the feature list from frontend evidence:
76
+ 1. Start with frontend routes (Route Discovery) — each top-level route group is a candidate feature
77
+ 2. Validate with navigation menus — features in the sidebar/nav are confirmed active
78
+ 3. Enrich with API call mapping (API Mapping) — link each feature's frontend services to backend endpoints
79
+ 4. Cross-reference against backend controllers (Backend Discovery) — identify which backend controllers serve each frontend feature
80
+
81
+ **Phantom detection** — Flag backend controllers NOT referenced by any frontend route or API call:
82
+ - Platform/public API controllers serving external consumers
83
+ - Webhook controllers triggered by external services
84
+ - Deprecated endpoints with code still present
85
+ - Sub-services used within other features
86
+ - Present these as "Backend-only endpoints (no frontend exposure)" in the confirmation
87
+
88
+ #### Incremental: Diff Against Existing Outline
89
+
90
+ In Incremental mode, compare the fresh discovery results against existing `_meta.md` data and classify each feature:
91
+
92
+ | Category | Condition |
93
+ |---|---|
94
+ | **Unchanged** | Feature exists in both existing outline and fresh discovery, routes/endpoints match |
95
+ | **New** | Found by agents but not in any existing `_meta.md` |
96
+ | **Removed** | In existing `_meta.md` but not found by agents |
97
+ | **Changed** | Feature exists in both but routes or endpoints differ |
98
+
99
+ #### Common Processing (both modes)
100
+
101
+ **Feature grouping** — Group confirmed features by portal/application:
102
+ - Detected from route structure (e.g., Admin, Public, Partner, Host)
103
+
104
+ **Decomposition rules:**
105
+ - Large features (>10 endpoints or >3 sub-routes) — note sub-features in metadata, keep as single folder
106
+ - Small features (<5 endpoints, no dedicated route) — fold into parent feature
107
+ - Sub-services without own routes — fold into the feature that uses them
108
+
109
+ **Slug and module assignment:**
110
+ - Feature slug: kebab-case from feature name (e.g., `user-management` → `users`, `report-builder`)
111
+ - Module abbreviation: short uppercase code derived from feature name (e.g., USR, AUTH, DASH, RPT)
112
+
113
+ **Duplicate check** — Cross-reference against existing TCs (TC Locator):
114
+ - Features with existing TC folders → mark status as "partial" (has outline, TCs may exist)
115
+ - Features with no TCs → mark status as "pending"
116
+
117
+ ### Step 4: Developer checkpoint
118
+
119
+ #### Fresh Mode — Full Checkpoint
120
+
121
+ Ask grounded questions one at a time before presenting the feature list. Use a **❓ Question:** prefix so the user knows their input is needed. Each question must reference real findings and pull NEW information — not confirm what you already found. Ask several questions targeting what the code analysis could not detect.
122
+
123
+ **Question focus areas** (business/product language first, technical fallback only when necessary):
124
+
125
+ - **Phantom features**: "There's a bulk-import capability in the code but no screen for it in the admin panel — is this tested separately or internal-only?"
126
+ - **Missing coverage**: "The navigation menu shows a Reports section but I can't find an actual page behind it — is this under development or was it removed?"
127
+ - **Hidden features**: "I see three separate user management areas but only one is visible in the menu — are the others internal tools or deprecated?"
128
+ - **Feature boundaries**: "User management and role assignment share the same backend — should they be one test area or two?"
129
+ - **Environment-specific**: "Some features seem to be behind feature flags and only active in staging — should these be included in the test outline?"
130
+
131
+ **CRITICAL**: Ask ONE question at a time. Wait for the answer before asking the next. Lead with your most significant finding.
132
+
133
+ **Choosing question format:**
134
+
135
+ - **`ask_user_question` tool** — when your question has 2-4 concrete options from code analysis (pattern conflicts, integration choices, scope boundaries, priority overrides). The user can always pick "Other" for free-text. Example: Use the `ask_user_question` tool with the question "Found 2 mapping approaches — which should new code follow?". Options: "Manual mapping (Recommended)" (Used in OrderService (src/services/OrderService.ts:45) — 8 occurrences); "AutoMapper" (Used in UserService (src/services/UserService.ts:12) — 2 occurrences).
136
+
137
+ - **Free-text with ❓ Question: prefix** — when the question is open-ended and options can't be predicted (discovery, "what am I missing?", corrections). Example:
138
+ "❓ Question: Integration scanner found no background job registration for this area. Is that expected, or is there async processing I'm not seeing?"
139
+
140
+ **Batching**: When you have 2-4 independent questions (answers don't depend on each other), you MAY batch them in a single `ask_user_question` call. Keep dependent questions sequential.
141
+
142
+ **Classify each response and track for persistence:**
143
+
144
+ **Confirmations** ("looks good", "yes proceed"):
145
+ - Record. Proceed to the next question, or to the feature list if all questions answered.
146
+
147
+ **Corrections** ("that's deprecated", "wrong grouping"):
148
+ - Update the feature list directly. Record as scope decision for the affected feature.
149
+
150
+ **Additions** ("you missed the refund flow", "add platform API"):
151
+ - Add to the feature list. Assign slug/module. Record as scope decision.
152
+
153
+ **Scope adjustments** ("skip admin features", "split settings into two"):
154
+ - Adjust the target list. Record as scope decision for affected features.
155
+
156
+ After all questions are answered, present the proposed feature list:
157
+
158
+ ```
159
+ ## Proposed Feature Outline
160
+
161
+ Framework detected: [framework name]
162
+ Applications found: [N] ([app names])
163
+ Total backend endpoints: ~[N] across [M] controllers
164
+
165
+ ---
166
+ ### [Portal Name] ([N] features)
167
+
168
+ 1. [Feature Name] — [N] routes, [M] API endpoints
169
+ Slug: [feature-slug] | Module: [MOD]
170
+ Sub-features: [list if decomposed, or "none"]
171
+ 2. [Feature Name] — [N] routes, [M] API endpoints
172
+ Slug: [feature-slug] | Module: [MOD]
173
+ [etc.]
174
+
175
+ ### Already Covered (will skip):
176
+ - [Feature] — [N] existing TCs in .rpiv/test-cases/[slug]/
177
+
178
+ ### Backend-Only Endpoints (no frontend exposure):
179
+ - [Controller/endpoint group] — [reason: platform API / webhook / deprecated]
180
+
181
+ ---
182
+ Create outline for [total] features?
183
+ ```
184
+
185
+ Use the `ask_user_question` tool with the following question: "Create outline for [total] features across [N] portals?". Options: "Create outline (Recommended)" (Write _meta.md files and folder structure for all features above); "Add or remove features" (Adjust the feature list before creating); "Reclassify" (Move backend-only endpoints into the main feature list or vice versa).
186
+
187
+ Handle any final additions, removals, reclassifications, or slug/module overrides.
188
+
189
+ #### Incremental Mode — Diff-Based Checkpoint
190
+
191
+ Present the diff results from Step 3 with previous decisions:
192
+
193
+ ```
194
+ ## Outline Update ([N] features, last run [generated date])
195
+
196
+ Unchanged ([N]):
197
+ - [Feature Name] — [slug] | [MOD]
198
+ [etc.]
199
+
200
+ New ([N]):
201
+ - [Feature Name] — [N] routes, [M] API endpoints (not in previous outline)
202
+ [etc.]
203
+
204
+ Removed ([N]):
205
+ - [Feature Name] — was [slug] | [MOD] (no longer found in codebase)
206
+ [etc.]
207
+
208
+ Changed ([N]):
209
+ - [Feature Name] — [what changed: "3 new endpoints", "route path changed", etc.]
210
+ [etc.]
211
+
212
+ Previous decisions:
213
+ - [Q&A pair 1 rephrased as single-line decision statement]
214
+ - [Q&A pair 2 rephrased as single-line decision statement]
215
+
216
+ ```
217
+
218
+ Use the `ask_user_question` tool with the following question: "[N] unchanged, [M] new, [K] removed features. Apply updates?". Options: "Apply updates (Recommended)" (Update _meta.md files and create new feature folders); "Adjust changes" (Modify the proposed new/removed/changed features); "Re-run discovery" (Something looks wrong — re-scan the codebase).
219
+
220
+ Rephrase each Q&A pair into a concise decision statement (e.g., `**Q:** "Is the bulk-import capability tested separately?" **A:** "No, internal only"` becomes `"Bulk-import — internal only, excluded from scope"`).
221
+
222
+ **If no changes detected** (all features unchanged):
223
+ - Present the unchanged list and previous decisions
224
+ - Use the `ask_user_question` tool with the following question: "No changes detected since [date]. Still accurate?". Options: "Confirmed" (Outline is still accurate — no updates needed); "Force re-scan" (Re-run discovery anyway to verify).
225
+
226
+ **For new/changed/removed features**, ask grounded questions ONE at a time (same approach as Fresh mode) targeting only the differences. Unchanged features need only batch confirmation.
227
+
228
+ **Classify each response and track for persistence** (same as Fresh mode: Confirmations, Corrections, Additions, Scope adjustments).
229
+
230
+ After all questions are answered, present the full feature list summary (same format as Fresh mode) and wait for user confirmation before proceeding to Step 5.
231
+
232
+ ### Step 5: Write folder outline
233
+
234
+ #### Fresh Mode — creating new files
235
+
236
+ 1. **Create directories** — for each confirmed feature, create `.rpiv/test-cases/{feature-slug}/`
237
+
238
+ 2. **Write `_meta.md` per feature** — one file per folder:
239
+
240
+ Read the full feature metadata template at `templates/feature-meta.md`. Follow the template exactly, populating fields from agent findings and checkpoint answers:
241
+ - `## Routes` — route paths and component names from Route Discovery (no file:line references)
242
+ - `## Endpoints` — HTTP methods and paths from Backend Discovery
243
+ - `## Scope Decisions` — from checkpoint answers classified as Corrections, Additions, or Scope adjustments that affect this feature. Include cross-cutting decisions that apply. If no scope decisions surfaced, write a default entry: `- Full feature in scope (no exclusions identified)`
244
+ - `## Domain Context` — from checkpoint answers that reveal business rules or intentional behaviors. Leave section with `- None identified` if nothing surfaced.
245
+ - `## Test Data Requirements` — from checkpoint answers that mention data needs. Leave section with `- None identified` if nothing surfaced.
246
+ - `## Checkpoint History` — all Q&A pairs from the checkpoint that affect this feature, under a date header (`### YYYY-MM-DD`)
247
+
248
+ 3. **Write root `README.md`** at `.rpiv/test-cases/README.md`:
249
+
250
+ Read the full outline README template at `templates/outline-readme.md`. Follow the template exactly, populating fields from the confirmed feature list.
251
+
252
+ 4. **Present summary:**
253
+ ```
254
+ ## Test Case Outline Created
255
+
256
+ | Folder | Module | Portal | Routes | Endpoints | Status |
257
+ |--------|--------|--------|--------|-----------|--------|
258
+ | users/ | USR | Admin | 5 | 20 | pending |
259
+ | reports/ | RPT | Admin | 2 | 15 | pending |
260
+ | [etc.] | | | | | |
261
+
262
+ Output: `.rpiv/test-cases/`
263
+ Total: [N] feature folders + [N] _meta.md files + 1 README.md
264
+ Phantom features skipped: [list or "none"]
265
+
266
+ Note: this outline is a starting point based on code analysis — re-run or add features manually as the project evolves.
267
+
268
+ Generate test cases for a feature:
269
+ `/skill:write-test-cases [feature-name]`
270
+ ```
271
+
272
+ #### Incremental Mode — updating existing files
273
+
274
+ 1. **Update existing `_meta.md` files** using the Edit tool:
275
+ - Update `## Routes` and `## Endpoints` with fresh discovery data
276
+ - Append new Q&A pairs to `## Checkpoint History` under a new date header (`### YYYY-MM-DD`)
277
+ - Update `## Scope Decisions` if changed during checkpoint
278
+ - Update `## Domain Context` if changed
279
+ - Update frontmatter `generated` date to current date
280
+
281
+ 2. **Add new feature folders** for newly discovered features:
282
+ - Create directory + write new `_meta.md` from template (same as Fresh mode Step 5.2)
283
+
284
+ 3. **Flag removed features** — do NOT delete folders (they may contain generated TCs):
285
+ - Update `_meta.md` frontmatter `status` to `removed`
286
+ - Append removal note to `## Checkpoint History`
287
+ - Inform the user which folders were flagged so they can decide whether to delete
288
+
289
+ 4. **Update root `README.md`** — update feature table and `Generated:` line using Edit
290
+
291
+ 5. **Present summary:**
292
+ ```
293
+ ## Test Case Outline Updated
294
+
295
+ Unchanged: [N] features
296
+ Updated: [N] _meta.md files (routes/endpoints refreshed)
297
+ Added: [N] new feature folders
298
+ Removed: [N] features flagged (folders preserved)
299
+
300
+ Changes:
301
+ - [List of what changed: "Added payments feature", "Flagged legacy-reports as removed", "Updated scope for users", etc.]
302
+
303
+ Output: `.rpiv/test-cases/`
304
+
305
+ Note: this outline is a starting point based on code analysis — re-run or add features manually as the project evolves.
306
+
307
+ Generate test cases for a feature:
308
+ `/skill:write-test-cases [feature-name]`
309
+ ```
310
+
311
+ ### Step 6: Handle follow-ups
312
+
313
+ - **Add features**: Add folder + `_meta.md`, update `README.md`
314
+ - **Remove features**: Note that user can delete the folder; update `README.md` using Edit
315
+ - **Reclassify phantoms**: Create folder + `_meta.md` for the reclassified feature, update `README.md`
316
+ - **Re-run**: If codebase changed significantly, re-run — the skill will detect existing outlines and run incremental discovery
317
+ - **Adjust metadata**: Edit specific `_meta.md` files using the Edit tool
318
+ - On follow-up updates: update `_meta.md` frontmatter `generated` field and `README.md` `Generated:` line to reflect the current date
319
+
320
+ ## Framework Detection Reference
321
+
322
+ | Indicator | Framework | Detection |
323
+ |-----------|-----------|-----------|
324
+ | `@angular/core` | Angular | `package.json` dependencies |
325
+ | `react-router-dom` / `react-router` / `@react-router` | React | `package.json` dependencies |
326
+ | `next` | Next.js | `package.json` dependencies |
327
+ | `vue-router` | Vue Router | `package.json` dependencies |
328
+ | `nuxt` | Nuxt | `package.json` dependencies |
329
+ | `.csproj` / `.sln` | .NET | File presence in project root |
330
+ | `pyproject.toml` / `requirements.txt` with Django/Flask/FastAPI | Python | File presence + dependency check |
331
+ | None found | Backend-only | Fallback to backend discovery |
332
+
333
+ ## Important Notes
334
+
335
+ - This skill creates folders and `_meta.md` only — use `write-test-cases` per feature for actual TC content.
336
+ - Frontend routes define features; backend enriches them. No UI route → no folder (unless developer overrides).
337
+ - Never skip the developer checkpoint, even on incremental runs.
338
+ - `_meta.md` is the inter-skill contract — keep route/endpoint paths stable, no `file:line` references.
339
+ - **File reading**: Always read mentioned files FULLY (no limit/offset) before invoking agents.
340
+ - **Critical ordering**: Follow the numbered steps exactly.
341
+ - ALWAYS detect mode first (Step 1) before spawning agents
342
+ - ALWAYS read mentioned files first before invoking agents (Step 1)
343
+ - ALWAYS wait for all agents to complete before determining targets (Step 3)
344
+ - ALWAYS checkpoint with the user before presenting the feature list (Step 4)
345
+ - ALWAYS get user confirmation before writing folders (Step 4 → Step 5)
346
+ - NEVER write folders or metadata with placeholder values
347
+ - **Duplicate avoidance**: Always check existing TCs via test-case-locator before creating folders.
348
+ - **Idempotent re-runs**: If `.rpiv/test-cases/` already has folders with TCs, mark them accordingly — do not overwrite existing TC content. Only update `_meta.md` and `README.md`.
@@ -0,0 +1,43 @@
1
+ ```markdown
2
+ ---
3
+ feature: "{Feature Name}"
4
+ module: {MOD}
5
+ portal: {Portal Name}
6
+ slug: {feature-slug}
7
+ status: pending | partial | generated
8
+ generated: {YYYY-MM-DD}
9
+ git_commit: {commit-hash}
10
+ tc_count: 0
11
+ ---
12
+
13
+ ## Routes
14
+ - `{route path}` — {ComponentName}
15
+
16
+ ## Endpoints
17
+ - `{HTTP method} {path}` — {description}
18
+
19
+ ## Scope Decisions
20
+ - {What's in scope and why}
21
+ - {What's OUT of scope and why}
22
+
23
+ ## Domain Context
24
+ - {Business rules, intentional behaviors, known limitations}
25
+
26
+ ## Test Data Requirements
27
+ - {Minimum data conditions for testing this feature}
28
+
29
+ ## Checkpoint History
30
+ ### {YYYY-MM-DD}
31
+ **Q: {Question asked during checkpoint}**
32
+ A: {Developer's answer}
33
+ ```
34
+
35
+ **Notes on `_meta.md` content:**
36
+ - Routes come from route discovery findings — path and component name only, no file:line
37
+ - Endpoints come from backend discovery, filtered to those serving this feature
38
+ - Scope Decisions, Domain Context, and Test Data Requirements come from checkpoint answers
39
+ - Checkpoint History records dated Q&A pairs from developer checkpoints
40
+ - If a feature has no frontend routes (e.g., widget), list the component entry point instead
41
+ - If status is "partial", add an `## Existing Test Cases` section listing TC IDs found by the test-case-locator agent
42
+ - git_commit records which commit was analyzed during outline generation — used for staleness detection by consuming skills
43
+ - tc_count starts at 0 and is updated by write-test-cases when TCs are created
@@ -0,0 +1,36 @@
1
+ ```markdown
2
+ # {Project Name} — Test Case Outline
3
+
4
+ ## Overview
5
+ - Project: {project name}
6
+ - Framework: {framework}
7
+ - Applications: {N} ({app names})
8
+ - Total features: {N} outlined
9
+ - Backend endpoints: ~{N} across {M} controllers
10
+ - Generated: {YYYY-MM-DD} | Branch: `{branch}` | Commit: `{commit}`
11
+
12
+ ## Features by Portal
13
+
14
+ ### {Portal Name} ({N} features)
15
+ | # | Feature | Module | Slug | Routes | Endpoints | Status |
16
+ |---|---------|--------|------|--------|-----------|--------|
17
+ | 1 | {name} | {MOD} | {slug} | {N} | {M} | pending |
18
+
19
+ ## Backend-Only Endpoints (no frontend exposure)
20
+ - **{Group name}** ({N} controllers, ~{M} endpoints) — {reason}
21
+
22
+ ## Next Steps
23
+ Generate test cases for a specific feature:
24
+ ```
25
+ /skill:write-test-cases {feature-name}
26
+ ```
27
+
28
+ To update this outline after codebase changes:
29
+ ```
30
+ /skill:outline-test-cases
31
+ ```
32
+ Incremental runs detect existing outlines and take faster paths.
33
+
34
+ ## Coverage
35
+ This outline was generated by static code analysis. It may not capture dynamically loaded features, features behind feature flags, or functionality added after the generation date. Re-run `outline-test-cases` periodically or add features manually.
36
+ ```