@sandrinio/vdoc 3.0.0 → 3.3.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.
- package/README.md +13 -13
- package/bin/vdoc.mjs +78 -9
- package/package.json +1 -1
- package/skills/agents/AGENTS.md +17 -143
- package/skills/agents/references/audit-workflow.md +65 -0
- package/skills/agents/references/doc-template.md +67 -0
- package/skills/agents/references/exploration-strategies.md +289 -0
- package/skills/agents/references/init-workflow.md +123 -0
- package/skills/agents/references/manifest-schema.json +16 -0
- package/skills/claude/SKILL.md +14 -198
- package/skills/claude/references/audit-workflow.md +65 -0
- package/skills/claude/references/exploration-strategies.md +289 -0
- package/skills/claude/references/init-workflow.md +123 -0
- package/skills/claude/vdoc-audit.md +80 -0
- package/skills/claude/vdoc-init.md +216 -0
- package/skills/cline/references/audit-workflow.md +65 -0
- package/skills/cline/references/doc-template.md +67 -0
- package/skills/cline/references/exploration-strategies.md +289 -0
- package/skills/cline/references/init-workflow.md +123 -0
- package/skills/cline/references/manifest-schema.json +16 -0
- package/skills/cline/vdoc-workflow.md +3 -13
- package/skills/cline/vdoc.md +10 -148
- package/skills/continue/references/audit-workflow.md +65 -0
- package/skills/continue/references/doc-template.md +67 -0
- package/skills/continue/references/exploration-strategies.md +289 -0
- package/skills/continue/references/init-workflow.md +123 -0
- package/skills/continue/references/manifest-schema.json +16 -0
- package/skills/continue/vdoc-command.md +3 -13
- package/skills/continue/vdoc.md +9 -147
- package/skills/cursor/RULE.md +68 -0
- package/skills/cursor/references/audit-workflow.md +65 -0
- package/skills/cursor/references/doc-template.md +67 -0
- package/skills/cursor/references/exploration-strategies.md +289 -0
- package/skills/cursor/references/init-workflow.md +123 -0
- package/skills/cursor/references/manifest-schema.json +16 -0
- package/skills/cursor/vdoc-command.md +3 -13
- package/skills/gemini/GEMINI.md +17 -143
- package/skills/gemini/references/audit-workflow.md +65 -0
- package/skills/gemini/references/doc-template.md +67 -0
- package/skills/gemini/references/exploration-strategies.md +289 -0
- package/skills/gemini/references/init-workflow.md +123 -0
- package/skills/gemini/references/manifest-schema.json +16 -0
- package/skills/gemini/vdoc.toml +3 -9
- package/skills/jetbrains-ai/references/audit-workflow.md +65 -0
- package/skills/jetbrains-ai/references/doc-template.md +67 -0
- package/skills/jetbrains-ai/references/exploration-strategies.md +289 -0
- package/skills/jetbrains-ai/references/init-workflow.md +123 -0
- package/skills/jetbrains-ai/references/manifest-schema.json +16 -0
- package/skills/jetbrains-ai/vdoc.md +17 -143
- package/skills/junie/guidelines.md +17 -143
- package/skills/junie/references/audit-workflow.md +65 -0
- package/skills/junie/references/doc-template.md +67 -0
- package/skills/junie/references/exploration-strategies.md +289 -0
- package/skills/junie/references/init-workflow.md +123 -0
- package/skills/junie/references/manifest-schema.json +16 -0
- package/skills/vscode/SKILL.md +39 -0
- package/skills/vscode/references/audit-workflow.md +65 -0
- package/skills/vscode/references/doc-template.md +67 -0
- package/skills/vscode/references/exploration-strategies.md +289 -0
- package/skills/vscode/references/init-workflow.md +123 -0
- package/skills/vscode/references/manifest-schema.json +16 -0
- package/skills/vscode/vdoc.instructions.md +30 -146
- package/skills/vscode/vdoc.prompt.md +5 -15
- package/skills/windsurf/SKILL.md +67 -0
- package/skills/windsurf/resources/audit-workflow.md +65 -0
- package/skills/windsurf/resources/doc-template.md +67 -0
- package/skills/windsurf/resources/exploration-strategies.md +289 -0
- package/skills/windsurf/resources/init-workflow.md +123 -0
- package/skills/windsurf/resources/manifest-schema.json +16 -0
- package/skills/windsurf/vdoc-workflow.md +3 -13
- package/skills/cursor/vdoc.mdc +0 -176
- package/skills/windsurf/vdoc.md +0 -94
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
# Exploration Strategies
|
|
2
|
+
|
|
3
|
+
Smart, targeted codebase exploration. Two phases: fingerprint the project, then follow the right archetype playbook.
|
|
4
|
+
|
|
5
|
+
## Phase 1 — Fingerprint
|
|
6
|
+
|
|
7
|
+
Read these high-signal files first (whichever exist) to classify the project. **3-5 reads max.**
|
|
8
|
+
|
|
9
|
+
### Package / Config Files (read 1-2)
|
|
10
|
+
|
|
11
|
+
| File | Ecosystem |
|
|
12
|
+
|------|-----------|
|
|
13
|
+
| `package.json` | Node.js / JavaScript / TypeScript |
|
|
14
|
+
| `pyproject.toml` / `setup.py` / `requirements.txt` | Python |
|
|
15
|
+
| `go.mod` | Go |
|
|
16
|
+
| `Cargo.toml` | Rust |
|
|
17
|
+
| `Gemfile` | Ruby |
|
|
18
|
+
| `pom.xml` / `build.gradle` | Java / Kotlin |
|
|
19
|
+
| `composer.json` | PHP |
|
|
20
|
+
| `*.csproj` / `*.sln` | .NET |
|
|
21
|
+
| `pubspec.yaml` | Dart / Flutter |
|
|
22
|
+
|
|
23
|
+
### Structure Scan
|
|
24
|
+
|
|
25
|
+
- List root directory
|
|
26
|
+
- List `src/` or `app/` or `lib/` (whichever exists)
|
|
27
|
+
|
|
28
|
+
### Entry Points (read 1-2)
|
|
29
|
+
|
|
30
|
+
- README.md (first 50 lines)
|
|
31
|
+
- Main entry file (e.g., `src/index.ts`, `main.py`, `cmd/main.go`)
|
|
32
|
+
|
|
33
|
+
### Determine
|
|
34
|
+
|
|
35
|
+
1. **Primary language(s)** and framework(s)
|
|
36
|
+
2. **Project archetype** — match to a playbook below
|
|
37
|
+
3. **Rough scope** — small (< 20 files), medium (20-100), large (100+)
|
|
38
|
+
|
|
39
|
+
If the project spans multiple archetypes (e.g., monorepo with frontend + API), apply multiple playbooks.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Phase 2 — Archetype Playbooks
|
|
44
|
+
|
|
45
|
+
Match the detected archetype and follow its playbook. Each defines:
|
|
46
|
+
- **Glob patterns** — files to read, in priority order
|
|
47
|
+
- **What to extract** — what each file category reveals
|
|
48
|
+
- **Feature signals** — patterns that indicate documentable features
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
### Web API
|
|
53
|
+
|
|
54
|
+
**Signals:** Express, FastAPI, Django REST, Rails, Spring Boot, Gin, Actix, Phoenix, Hono, NestJS
|
|
55
|
+
|
|
56
|
+
| Priority | Glob Pattern | What to Extract |
|
|
57
|
+
|----------|-------------|-----------------|
|
|
58
|
+
| 1 | `**/routes/**`, `**/router.*`, `**/urls.py` | Endpoints, HTTP methods, URL structure |
|
|
59
|
+
| 2 | `**/middleware/**`, `**/middleware.*` | Auth, CORS, rate limiting, logging, error handling |
|
|
60
|
+
| 3 | `**/models/**`, `**/schema*`, `**/migrations/**` | Data model, entities, relationships |
|
|
61
|
+
| 4 | `**/controllers/**`, `**/handlers/**`, `**/views/**` | Business logic per endpoint |
|
|
62
|
+
| 5 | `**/services/**`, `**/lib/**` | Shared logic, external integrations |
|
|
63
|
+
| 6 | `**/config/**`, `.env*`, `**/settings*` | Environment config, feature flags |
|
|
64
|
+
| 7 | `**/tests/**` (skim 2-3) | What's tested reveals what matters |
|
|
65
|
+
|
|
66
|
+
**Feature signals:**
|
|
67
|
+
- Auth routes/middleware → Authentication doc
|
|
68
|
+
- Payment/billing routes → Payments doc
|
|
69
|
+
- File upload handlers → File Management doc
|
|
70
|
+
- WebSocket/SSE handlers → Real-time doc
|
|
71
|
+
- Background jobs/queues → Background Processing doc
|
|
72
|
+
- Email/notification services → Notifications doc
|
|
73
|
+
- Search endpoints → Search doc
|
|
74
|
+
- Admin routes → Admin Panel doc
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
### Frontend SPA
|
|
79
|
+
|
|
80
|
+
**Signals:** React (CRA/Vite), Vue, Svelte, Angular, Solid
|
|
81
|
+
|
|
82
|
+
| Priority | Glob Pattern | What to Extract |
|
|
83
|
+
|----------|-------------|-----------------|
|
|
84
|
+
| 1 | `**/pages/**`, `**/views/**`, `**/routes*` | Page tree, routing structure |
|
|
85
|
+
| 2 | `**/store/**`, `**/context/**`, `**/state/**`, `**/*slice*` | State shape, data flow |
|
|
86
|
+
| 3 | `**/api/**`, `**/services/**`, `**/hooks/use*` | API integration, data fetching |
|
|
87
|
+
| 4 | `**/components/**` (skim top-level) | Component architecture, shared vs feature |
|
|
88
|
+
| 5 | `**/types/**`, `**/interfaces/**`, `**/*.d.ts` | Data contracts, shared types |
|
|
89
|
+
| 6 | `**/utils/**`, `**/helpers/**` | Shared utilities |
|
|
90
|
+
| 7 | `**/config/**`, `.env*` | Feature flags, API URLs, build config |
|
|
91
|
+
|
|
92
|
+
**Feature signals:**
|
|
93
|
+
- Auth context/store + login pages → Authentication doc
|
|
94
|
+
- Form components + validation → Forms doc
|
|
95
|
+
- Data tables with pagination → Data Display doc
|
|
96
|
+
- Charts/dashboards → Analytics doc
|
|
97
|
+
- Theming/i18n files → Theming / Internationalization doc
|
|
98
|
+
- File upload components → Media Management doc
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
### Full-Stack Framework
|
|
103
|
+
|
|
104
|
+
**Signals:** Next.js, Nuxt, SvelteKit, Remix, RedwoodJS, Blitz, Astro (SSR)
|
|
105
|
+
|
|
106
|
+
| Priority | Glob Pattern | What to Extract |
|
|
107
|
+
|----------|-------------|-----------------|
|
|
108
|
+
| 1 | `**/app/**/page.*`, `**/pages/**`, `**/routes/**` | UI pages AND API routes — the router is the architecture |
|
|
109
|
+
| 2 | `**/api/**`, `**/server/**`, `**/actions/**` | Server-side logic, server actions |
|
|
110
|
+
| 3 | `**/models/**`, `**/schema*`, `**/prisma/**`, `**/drizzle/**` | Data layer, ORM config |
|
|
111
|
+
| 4 | `**/middleware.*`, `**/middleware/**` | Request pipeline, auth, redirects |
|
|
112
|
+
| 5 | `**/components/**` (skim top-level) | Shared UI components |
|
|
113
|
+
| 6 | `**/lib/**`, `**/utils/**`, `**/services/**` | Shared server + client utilities |
|
|
114
|
+
| 7 | `**/config/**`, `.env*`, `next.config.*`, `nuxt.config.*` | Framework and environment config |
|
|
115
|
+
|
|
116
|
+
**Feature signals:**
|
|
117
|
+
- All Web API signals + all Frontend SPA signals
|
|
118
|
+
- Server actions / mutations → Data Mutation doc
|
|
119
|
+
- ISR/SSG configuration → Rendering Strategy doc
|
|
120
|
+
- Edge functions / middleware → Edge Computing doc
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
### CLI Tool
|
|
125
|
+
|
|
126
|
+
**Signals:** Commander, Yargs, Click, Typer, Cobra, Clap, oclif, Argparse
|
|
127
|
+
|
|
128
|
+
| Priority | Glob Pattern | What to Extract |
|
|
129
|
+
|----------|-------------|-----------------|
|
|
130
|
+
| 1 | `**/commands/**`, `**/cmd/**`, `**/cli.*` | Command tree, subcommands |
|
|
131
|
+
| 2 | Main entry (`bin/*`, `src/index.*`, `src/main.*`) | Argument parsing, top-level flow |
|
|
132
|
+
| 3 | `**/config*`, `**/*rc*`, `**/settings*` | Config file formats, defaults |
|
|
133
|
+
| 4 | `**/utils/**`, `**/lib/**`, `**/core/**` | Core logic behind commands |
|
|
134
|
+
| 5 | `**/output*`, `**/format*`, `**/display*` | Output formatting (JSON, table, etc.) |
|
|
135
|
+
| 6 | `**/templates/**`, `**/scaffolds/**` | Code generation templates |
|
|
136
|
+
|
|
137
|
+
**Feature signals:**
|
|
138
|
+
- Multiple subcommands → one doc per command group
|
|
139
|
+
- Config file handling → Configuration doc
|
|
140
|
+
- Plugin/extension system → Plugin Architecture doc
|
|
141
|
+
- Interactive prompts → User Interaction doc
|
|
142
|
+
- File I/O operations → File Processing doc
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
### Library / SDK
|
|
147
|
+
|
|
148
|
+
**Signals:** Published package with `main`/`exports` in package.json, `lib/` with clear public API, type declarations
|
|
149
|
+
|
|
150
|
+
| Priority | Glob Pattern | What to Extract |
|
|
151
|
+
|----------|-------------|-----------------|
|
|
152
|
+
| 1 | Main export (`src/index.*`, `lib/index.*`, `__init__.py`) | Public API surface |
|
|
153
|
+
| 2 | `**/*.d.ts`, `**/types.*`, `**/interfaces.*` | Type contracts, input/output shapes |
|
|
154
|
+
| 3 | `**/core/**`, `**/lib/**` | Internal implementation |
|
|
155
|
+
| 4 | `**/utils/**`, `**/helpers/**` | Supporting utilities |
|
|
156
|
+
| 5 | `**/examples/**`, `**/demo/**` | Usage patterns |
|
|
157
|
+
| 6 | `**/plugins/**`, `**/adapters/**`, `**/providers/**` | Extension points |
|
|
158
|
+
| 7 | `**/tests/**` (skim 2-3) | Edge cases, expected behavior |
|
|
159
|
+
|
|
160
|
+
**Feature signals:**
|
|
161
|
+
- Multiple exported classes/functions → Core API doc
|
|
162
|
+
- Plugin/adapter pattern → Extension Architecture doc
|
|
163
|
+
- Multiple output formats → Serialization doc
|
|
164
|
+
- Caching layer → Performance doc
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
### Mobile App
|
|
169
|
+
|
|
170
|
+
**Signals:** React Native, Flutter, SwiftUI, Jetpack Compose, Expo, Ionic, Capacitor
|
|
171
|
+
|
|
172
|
+
| Priority | Glob Pattern | What to Extract |
|
|
173
|
+
|----------|-------------|-----------------|
|
|
174
|
+
| 1 | `**/screens/**`, `**/pages/**`, `**/views/**` | Screen tree, navigation structure |
|
|
175
|
+
| 2 | `**/navigation/**`, `**/router*` | Navigation graph, deep linking |
|
|
176
|
+
| 3 | `**/store/**`, `**/state/**`, `**/providers/**` | State management, data flow |
|
|
177
|
+
| 4 | `**/api/**`, `**/services/**`, `**/network/**` | Backend communication, offline sync |
|
|
178
|
+
| 5 | `**/components/**` (skim) | Shared UI components |
|
|
179
|
+
| 6 | `**/native/**`, `**/platform/**`, `**/ios/**`, `**/android/**` | Platform-specific code, native modules |
|
|
180
|
+
| 7 | `**/assets/**` (list only) | Bundled resources |
|
|
181
|
+
|
|
182
|
+
**Feature signals:**
|
|
183
|
+
- Push notification setup → Notifications doc
|
|
184
|
+
- Camera/media access → Media Capture doc
|
|
185
|
+
- Offline storage (SQLite, Realm, AsyncStorage) → Data Persistence doc
|
|
186
|
+
- Deep linking / universal links → Navigation doc
|
|
187
|
+
- Platform-specific native modules → Platform Integration doc
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
### Data Pipeline / ML
|
|
192
|
+
|
|
193
|
+
**Signals:** Airflow, dbt, Prefect, Dagster, Luigi, Pandas, Spark, TensorFlow, PyTorch, scikit-learn, Jupyter notebooks
|
|
194
|
+
|
|
195
|
+
| Priority | Glob Pattern | What to Extract |
|
|
196
|
+
|----------|-------------|-----------------|
|
|
197
|
+
| 1 | `**/dags/**`, `**/pipelines/**`, `**/flows/**`, `**/workflows/**` | Pipeline definitions, DAGs, task graph |
|
|
198
|
+
| 2 | `**/models/**` (ML or dbt) | Model definitions, training logic or SQL transforms |
|
|
199
|
+
| 3 | `**/sources/**`, `**/extractors/**`, `**/connectors/**` | Data sources, ingestion logic |
|
|
200
|
+
| 4 | `**/transforms/**`, `**/processors/**` | Data transformation logic |
|
|
201
|
+
| 5 | `**/schemas/**`, `**/contracts/**` | Data contracts, validation |
|
|
202
|
+
| 6 | `**/notebooks/**`, `*.ipynb` | Exploratory analysis, experiments |
|
|
203
|
+
| 7 | `**/config/**`, `**/profiles*` | Connection strings, environment config |
|
|
204
|
+
|
|
205
|
+
**Feature signals:**
|
|
206
|
+
- Multiple DAGs/pipelines → one doc per pipeline
|
|
207
|
+
- ML model training → Model Training doc
|
|
208
|
+
- Feature engineering → Feature Store doc
|
|
209
|
+
- Data validation (Great Expectations, Pandera) → Data Quality doc
|
|
210
|
+
- Scheduled runs → Orchestration doc
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
### Monorepo
|
|
215
|
+
|
|
216
|
+
**Signals:** Turborepo, Nx, Lerna, Rush, Bazel, pnpm workspaces — has `packages/`, `apps/`, or `workspace` config
|
|
217
|
+
|
|
218
|
+
| Priority | Glob Pattern | What to Extract |
|
|
219
|
+
|----------|-------------|-----------------|
|
|
220
|
+
| 1 | Root config (`turbo.json`, `nx.json`, `lerna.json`, `pnpm-workspace.yaml`) | Workspace structure, build pipeline |
|
|
221
|
+
| 2 | `packages/*/package.json` or `apps/*/package.json` | All packages/apps and their dependencies |
|
|
222
|
+
| 3 | `**/shared/**`, `**/common/**`, `**/core/**` | Shared packages that others depend on |
|
|
223
|
+
| 4 | Each app/package entry point (skim) | Purpose of each workspace member |
|
|
224
|
+
|
|
225
|
+
**Then apply the matching sub-archetype playbook** to each significant package/app (e.g., Web API for the backend, Frontend SPA for the frontend, Library for shared packages).
|
|
226
|
+
|
|
227
|
+
**Feature signals:**
|
|
228
|
+
- Shared packages → Shared Infrastructure doc
|
|
229
|
+
- Build/deploy pipeline → Build System doc
|
|
230
|
+
- Inter-package dependencies → Architecture Overview doc (dependency graph)
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
### Microservices
|
|
235
|
+
|
|
236
|
+
**Signals:** Docker Compose, Kubernetes manifests, multiple services with separate entry points, API gateway, service mesh
|
|
237
|
+
|
|
238
|
+
| Priority | Glob Pattern | What to Extract |
|
|
239
|
+
|----------|-------------|-----------------|
|
|
240
|
+
| 1 | `docker-compose*`, `**/k8s/**`, `**/helm/**`, `**/terraform/**` | Service topology, infrastructure |
|
|
241
|
+
| 2 | API gateway config, `**/gateway/**` | Routing, load balancing, auth gateway |
|
|
242
|
+
| 3 | Each service's entry point and routes (skim) | Service responsibilities, API surface |
|
|
243
|
+
| 4 | `**/proto/**`, `**/graphql/**`, `**/schemas/**` | Inter-service contracts (gRPC, GraphQL) |
|
|
244
|
+
| 5 | `**/queues/**`, `**/events/**`, `**/messaging/**` | Async communication, event bus |
|
|
245
|
+
| 6 | `**/shared/**`, `**/common/**` | Shared libraries across services |
|
|
246
|
+
|
|
247
|
+
**Then apply the Web API playbook** to each significant service.
|
|
248
|
+
|
|
249
|
+
**Feature signals:**
|
|
250
|
+
- Service discovery → Service Mesh doc
|
|
251
|
+
- Event-driven communication → Event Architecture doc
|
|
252
|
+
- Shared vs per-service database → Data Architecture doc
|
|
253
|
+
- Health checks / circuit breakers → Resilience doc
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
### Infrastructure / IaC
|
|
258
|
+
|
|
259
|
+
**Signals:** Terraform, Pulumi, CloudFormation, Ansible, CDK, Serverless Framework
|
|
260
|
+
|
|
261
|
+
| Priority | Glob Pattern | What to Extract |
|
|
262
|
+
|----------|-------------|-----------------|
|
|
263
|
+
| 1 | `**/main.tf`, `**/stacks/**`, `**/lib/**` (CDK) | Resource definitions, stack structure |
|
|
264
|
+
| 2 | `**/variables*`, `**/inputs*`, `**/config*` | Parameterization, environment configs |
|
|
265
|
+
| 3 | `**/modules/**`, `**/constructs/**` | Reusable infrastructure modules |
|
|
266
|
+
| 4 | `**/environments/**`, `**/stages/**` | Environment-specific overrides |
|
|
267
|
+
| 5 | `**/outputs*`, `**/exports*` | Cross-stack references |
|
|
268
|
+
| 6 | CI/CD config (`.github/workflows/`, `Jenkinsfile`) | Deployment pipeline |
|
|
269
|
+
|
|
270
|
+
**Feature signals:**
|
|
271
|
+
- Networking (VPC, subnets, security groups) → Networking doc
|
|
272
|
+
- Compute (ECS, Lambda, EC2) → Compute Architecture doc
|
|
273
|
+
- Data stores (RDS, DynamoDB, S3) → Data Infrastructure doc
|
|
274
|
+
- CI/CD pipeline → Deployment Pipeline doc
|
|
275
|
+
- Monitoring (CloudWatch, Datadog) → Observability doc
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
## Fallback — Unknown Archetype
|
|
280
|
+
|
|
281
|
+
If the project doesn't clearly match any archetype:
|
|
282
|
+
|
|
283
|
+
1. List the root directory and `src/` (or equivalent)
|
|
284
|
+
2. Read the top 5 largest files by line count
|
|
285
|
+
3. Read any files with "main", "app", "server", "index", or "core" in the name
|
|
286
|
+
4. Check test files — they reveal what developers think is important
|
|
287
|
+
5. Check CI/CD config (`.github/workflows/`, `Jenkinsfile`) — pipeline steps reveal build/deploy architecture
|
|
288
|
+
|
|
289
|
+
Then propose an archetype to the user: *"This looks like a [X] project. I'll explore it using the [X] playbook. Sound right?"*
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# Init Workflow
|
|
2
|
+
|
|
3
|
+
## Step 1 — Explore
|
|
4
|
+
|
|
5
|
+
Follow the two-phase exploration strategy in `references/exploration-strategies.md`:
|
|
6
|
+
|
|
7
|
+
**Phase 1 — Fingerprint** (3-5 file reads max)
|
|
8
|
+
Read package/config files and directory structure to identify the project's language, framework, and archetype (Web API, Frontend SPA, Full-stack, CLI, Library, Mobile, Data Pipeline, Monorepo, Microservices, or Infrastructure).
|
|
9
|
+
|
|
10
|
+
**Phase 2 — Targeted Exploration** (archetype-specific)
|
|
11
|
+
Apply the matching archetype playbook from `references/exploration-strategies.md`. Read files in priority order using the glob patterns listed. Identify feature signals — each signal maps to a documentable feature.
|
|
12
|
+
|
|
13
|
+
If the project spans multiple archetypes (e.g., a monorepo with frontend + API), apply multiple playbooks. If no archetype matches, use the Fallback strategy and confirm with the user.
|
|
14
|
+
|
|
15
|
+
Do not skim. Understand how the system actually works before proposing docs.
|
|
16
|
+
|
|
17
|
+
**Important:** Use your built-in file-reading tools to explore. Do NOT create scanner scripts, shell scripts, or any tooling. vdoc is purely AI-driven — no scripts, no build steps, no infrastructure.
|
|
18
|
+
|
|
19
|
+
**Phase 3 — Write Exploration Log**
|
|
20
|
+
After exploring, write `vdocs/_exploration_log.md` documenting what you found:
|
|
21
|
+
|
|
22
|
+
```markdown
|
|
23
|
+
# Exploration Log
|
|
24
|
+
|
|
25
|
+
## Fingerprint
|
|
26
|
+
- **Language(s):** e.g., TypeScript, Python
|
|
27
|
+
- **Framework(s):** e.g., Next.js 14, FastAPI
|
|
28
|
+
- **Archetype(s):** e.g., Full-stack Framework
|
|
29
|
+
- **Scope:** e.g., ~85 files, medium
|
|
30
|
+
|
|
31
|
+
## Files Read
|
|
32
|
+
| # | File | Why | What I Found |
|
|
33
|
+
|---|------|-----|--------------|
|
|
34
|
+
| 1 | package.json | Fingerprint | Next.js 14, Prisma, NextAuth |
|
|
35
|
+
| 2 | src/app/ (listing) | Page tree | 12 routes, 3 API routes |
|
|
36
|
+
| ... | ... | ... | ... |
|
|
37
|
+
|
|
38
|
+
## Feature Signals Detected
|
|
39
|
+
| Signal | Source File(s) | Proposed Doc |
|
|
40
|
+
|--------|---------------|--------------|
|
|
41
|
+
| Auth middleware + login page | middleware.ts, app/login/page.tsx | AUTHENTICATION_DOC.md |
|
|
42
|
+
| Prisma schema with 8 models | prisma/schema.prisma | DATA_MODEL_DOC.md |
|
|
43
|
+
| ... | ... | ... |
|
|
44
|
+
|
|
45
|
+
## Ambiguities / Open Questions
|
|
46
|
+
- Could not determine why Redis is in dependencies — no usage found. Ask user.
|
|
47
|
+
- Payments folder exists but appears incomplete / WIP.
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
This log is your working memory. It feeds directly into Step 2 (Plan).
|
|
51
|
+
|
|
52
|
+
## Step 2 — Plan
|
|
53
|
+
|
|
54
|
+
Create `vdocs/_DOCUMENTATION_PLAN.md` listing each proposed doc:
|
|
55
|
+
|
|
56
|
+
```markdown
|
|
57
|
+
# Documentation Plan
|
|
58
|
+
|
|
59
|
+
## Proposed Documents
|
|
60
|
+
|
|
61
|
+
1. **PROJECT_OVERVIEW_DOC.md** — Tech stack, architecture, project structure, dev setup
|
|
62
|
+
2. **AUTHENTICATION_DOC.md** — OAuth2 flow, JWT lifecycle, session management, RBAC
|
|
63
|
+
3. **API_REFERENCE_DOC.md** — All endpoints, request/response shapes, error codes
|
|
64
|
+
...
|
|
65
|
+
|
|
66
|
+
## Notes
|
|
67
|
+
- Each doc covers one logical feature, not one file
|
|
68
|
+
- Docs should be useful for onboarding AND as AI context for planning changes
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Present the plan to the user. Actively suggest changes:
|
|
72
|
+
- "Should I merge X and Y into one doc?"
|
|
73
|
+
- "I found a websocket system — want that documented separately?"
|
|
74
|
+
- "Any internal/legacy systems I should skip?"
|
|
75
|
+
|
|
76
|
+
Wait for user approval before proceeding.
|
|
77
|
+
|
|
78
|
+
## Step 3 — Generate
|
|
79
|
+
|
|
80
|
+
For each approved doc:
|
|
81
|
+
|
|
82
|
+
1. Read ALL relevant source files for that feature — not just the main file, but helpers, types, middleware, tests
|
|
83
|
+
2. Follow the template in `.agents/vdoc/doc-template.md` exactly
|
|
84
|
+
3. Write to `vdocs/FEATURE_NAME_DOC.md`
|
|
85
|
+
|
|
86
|
+
**Writing rules:**
|
|
87
|
+
|
|
88
|
+
- **Mermaid diagrams are mandatory** in "How It Works". Show the actual flow — request lifecycle, state transitions, data pipeline. If a flow has more than 7-9 nodes, split into multiple diagrams.
|
|
89
|
+
- **Data Model** must show real entities from the code, not generic placeholders. Use mermaid ER diagrams for relational data, tables for simpler models.
|
|
90
|
+
- **Constraints & Decisions** is the most valuable section. Dig into the code for non-obvious choices: "Uses polling instead of websockets because...", "Auth tokens expire in 15min because...". If you can't find the reason, state the constraint and mark it: `Reason: unknown — verify with team`.
|
|
91
|
+
- **Related Features** must reference other docs by filename and explain the coupling: "Changes to the JWT schema will require updates to API_REFERENCE_DOC.md (auth middleware affects all endpoints)."
|
|
92
|
+
- **Configuration** must list actual env vars/secrets from the code, not hypothetical ones.
|
|
93
|
+
- **Error Handling** — trace what happens when things fail. What does the user see? What gets logged? Is there retry logic?
|
|
94
|
+
|
|
95
|
+
## Step 4 — Manifest
|
|
96
|
+
|
|
97
|
+
Create `vdocs/_manifest.json` using the schema in `.agents/vdoc/manifest-schema.json`.
|
|
98
|
+
|
|
99
|
+
The `description` field is critical — write it rich enough that you can route any user question to the right doc by matching against descriptions. Include specific technology names, patterns, and concepts.
|
|
100
|
+
|
|
101
|
+
Example:
|
|
102
|
+
|
|
103
|
+
```json
|
|
104
|
+
{
|
|
105
|
+
"filepath": "AUTHENTICATION_DOC.md",
|
|
106
|
+
"title": "Authentication - OAuth2 & JWT",
|
|
107
|
+
"version": "1.0.0",
|
|
108
|
+
"description": "OAuth2 flow with Google/GitHub providers, JWT token lifecycle, session management via NextAuth.js, route protection middleware, and role-based access control.",
|
|
109
|
+
"tags": ["oauth2", "jwt", "session-management", "rbac"]
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Step 5 — Self-Review
|
|
114
|
+
|
|
115
|
+
Before finishing, verify:
|
|
116
|
+
|
|
117
|
+
- [ ] Every doc has at least one mermaid diagram in "How It Works"
|
|
118
|
+
- [ ] Every doc has at least 2 entries in "Constraints & Decisions"
|
|
119
|
+
- [ ] Every doc's "Key Files" lists real paths that exist in the codebase
|
|
120
|
+
- [ ] Every doc's "Configuration" lists actual env vars from the code
|
|
121
|
+
- [ ] Every doc's "Related Features" references other doc filenames
|
|
122
|
+
- [ ] Manifest `description` is detailed enough for semantic routing
|
|
123
|
+
- [ ] No doc is just a shallow restatement of file names — each explains WHY and HOW
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"project": "<project-name>",
|
|
3
|
+
"vdoc_version": "3.0.0",
|
|
4
|
+
"created_at": "<ISO-8601>",
|
|
5
|
+
"last_updated": "<ISO-8601>",
|
|
6
|
+
"last_commit": "<short-sha>",
|
|
7
|
+
"documentation": [
|
|
8
|
+
{
|
|
9
|
+
"filepath": "FEATURE_NAME_DOC.md",
|
|
10
|
+
"title": "Human-Readable Feature Title",
|
|
11
|
+
"version": "1.0.0",
|
|
12
|
+
"description": "Rich semantic description with specific technology names, patterns, and concepts. Detailed enough that an AI can route any user question to this doc by matching against this field.",
|
|
13
|
+
"tags": ["keyword-1", "keyword-2"]
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
}
|
package/skills/claude/SKILL.md
CHANGED
|
@@ -1,212 +1,28 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vdoc
|
|
3
|
-
description:
|
|
4
|
-
argument-hint: "[init|audit] or ask any documentation question"
|
|
5
|
-
user-invocable: true
|
|
6
|
-
allowed-tools: ["Bash", "Read", "Write", "Edit", "Glob", "Grep"]
|
|
3
|
+
description: "Query existing project documentation. Use when user asks questions about the codebase and vdocs/ exists. For generating docs use /vdoc-init, for auditing use /vdoc-audit."
|
|
7
4
|
---
|
|
8
5
|
|
|
9
|
-
# vdoc — Documentation
|
|
6
|
+
# vdoc — Documentation Query
|
|
10
7
|
|
|
11
|
-
|
|
8
|
+
Answer questions about the codebase using existing documentation in `vdocs/`.
|
|
12
9
|
|
|
13
|
-
|
|
10
|
+
## Other Commands
|
|
14
11
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
## Mode 1: Init
|
|
18
|
-
|
|
19
|
-
**Trigger:** `/vdoc init` or user says "document this project"
|
|
20
|
-
|
|
21
|
-
### Step 1 — Explore
|
|
22
|
-
|
|
23
|
-
Read the codebase thoroughly. Identify:
|
|
24
|
-
|
|
25
|
-
- **Tech stack**: languages, frameworks, databases, ORMs
|
|
26
|
-
- **Features**: authentication, API, payments, notifications, search, etc.
|
|
27
|
-
- **Architecture**: monolith vs microservices, frontend/backend split, key patterns (MVC, event-driven, etc.)
|
|
28
|
-
- **Integrations**: third-party services (Stripe, AWS, Redis, etc.)
|
|
29
|
-
- **Entry points**: where requests come in, how they flow through the system
|
|
30
|
-
|
|
31
|
-
Do not skim. Read key files — entry points, config files, route definitions, schema files, middleware. Understand how the system actually works before proposing docs.
|
|
32
|
-
|
|
33
|
-
### Step 2 — Plan
|
|
34
|
-
|
|
35
|
-
Create `vdocs/_DOCUMENTATION_PLAN.md` listing each proposed doc:
|
|
36
|
-
|
|
37
|
-
```markdown
|
|
38
|
-
# Documentation Plan
|
|
39
|
-
|
|
40
|
-
## Proposed Documents
|
|
41
|
-
|
|
42
|
-
1. **PROJECT_OVERVIEW_DOC.md** — Tech stack, architecture, project structure, dev setup
|
|
43
|
-
2. **AUTHENTICATION_DOC.md** — OAuth2 flow, JWT lifecycle, session management, RBAC
|
|
44
|
-
3. **API_REFERENCE_DOC.md** — All endpoints, request/response shapes, error codes
|
|
45
|
-
...
|
|
46
|
-
|
|
47
|
-
## Notes
|
|
48
|
-
- Each doc covers one logical feature, not one file
|
|
49
|
-
- Docs should be useful for onboarding AND as AI context for planning changes
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
Present the plan to the user. Actively suggest changes:
|
|
53
|
-
- "Should I merge X and Y into one doc?"
|
|
54
|
-
- "I found a websocket system — want that documented separately?"
|
|
55
|
-
- "Any internal/legacy systems I should skip?"
|
|
56
|
-
|
|
57
|
-
Wait for user approval before proceeding.
|
|
58
|
-
|
|
59
|
-
### Step 3 — Generate
|
|
60
|
-
|
|
61
|
-
For each approved doc:
|
|
62
|
-
|
|
63
|
-
1. Read ALL relevant source files for that feature — not just the main file, but helpers, types, middleware, tests
|
|
64
|
-
2. Follow the template in `references/doc-template.md` exactly
|
|
65
|
-
3. Write to `vdocs/FEATURE_NAME_DOC.md`
|
|
66
|
-
|
|
67
|
-
**Writing rules:**
|
|
68
|
-
|
|
69
|
-
- **Mermaid diagrams are mandatory** in "How It Works". Show the actual flow — request lifecycle, state transitions, data pipeline. If a flow has more than 7-9 nodes, split into multiple diagrams.
|
|
70
|
-
- **Data Model** must show real entities from the code, not generic placeholders. Use mermaid ER diagrams for relational data, tables for simpler models.
|
|
71
|
-
- **Constraints & Decisions** is the most valuable section. Dig into the code for non-obvious choices: "Uses polling instead of websockets because...", "Auth tokens expire in 15min because...". If you can't find the reason, state the constraint and mark it: `Reason: unknown — verify with team`.
|
|
72
|
-
- **Related Features** must reference other docs by filename and explain the coupling: "Changes to the JWT schema will require updates to API_REFERENCE_DOC.md (auth middleware affects all endpoints)."
|
|
73
|
-
- **Configuration** must list actual env vars/secrets from the code, not hypothetical ones.
|
|
74
|
-
- **Error Handling** — trace what happens when things fail. What does the user see? What gets logged? Is there retry logic?
|
|
75
|
-
|
|
76
|
-
### Step 4 — Manifest
|
|
77
|
-
|
|
78
|
-
Create `vdocs/_manifest.json`:
|
|
79
|
-
|
|
80
|
-
```json
|
|
81
|
-
{
|
|
82
|
-
"project": "<project-name>",
|
|
83
|
-
"vdoc_version": "3.0.0",
|
|
84
|
-
"created_at": "<ISO-8601>",
|
|
85
|
-
"last_updated": "<ISO-8601>",
|
|
86
|
-
"last_commit": "<short-sha>",
|
|
87
|
-
"documentation": [
|
|
88
|
-
{
|
|
89
|
-
"filepath": "AUTHENTICATION_DOC.md",
|
|
90
|
-
"title": "Authentication - OAuth2 & JWT",
|
|
91
|
-
"version": "1.0.0",
|
|
92
|
-
"description": "OAuth2 flow with Google/GitHub providers, JWT token lifecycle, session management via NextAuth.js, route protection middleware, and role-based access control.",
|
|
93
|
-
"tags": ["oauth2", "jwt", "session-management", "rbac"]
|
|
94
|
-
}
|
|
95
|
-
]
|
|
96
|
-
}
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
The `description` field is critical — write it rich enough that you can route any user question to the right doc by matching against descriptions. Include specific technology names, patterns, and concepts.
|
|
100
|
-
|
|
101
|
-
### Step 5 — Self-Review
|
|
102
|
-
|
|
103
|
-
Before finishing, verify:
|
|
104
|
-
|
|
105
|
-
- [ ] Every doc has at least one mermaid diagram in "How It Works"
|
|
106
|
-
- [ ] Every doc has at least 2 entries in "Constraints & Decisions"
|
|
107
|
-
- [ ] Every doc's "Key Files" lists real paths that exist in the codebase
|
|
108
|
-
- [ ] Every doc's "Configuration" lists actual env vars from the code
|
|
109
|
-
- [ ] Every doc's "Related Features" references other doc filenames
|
|
110
|
-
- [ ] Manifest `description` is detailed enough for semantic routing
|
|
111
|
-
- [ ] No doc is just a shallow restatement of file names — each explains WHY and HOW
|
|
112
|
-
|
|
113
|
-
---
|
|
114
|
-
|
|
115
|
-
## Mode 2: Audit
|
|
116
|
-
|
|
117
|
-
**Trigger:** `/vdoc audit` or user says "audit docs"
|
|
118
|
-
|
|
119
|
-
### Step 1 — Read Current State
|
|
12
|
+
- **`/vdoc-init`** — Generate documentation from source code (explore → plan → generate)
|
|
13
|
+
- **`/vdoc-audit`** — Audit docs for stale, missing, or dead entries
|
|
120
14
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
### Step 2 — Detect Changes
|
|
124
|
-
|
|
125
|
-
Run `git log --name-only --since="<last_updated>" --pretty=format:""` or use `git diff` to find all source files that changed since the last audit.
|
|
126
|
-
|
|
127
|
-
Cross-reference changed files against each doc's "Key Files" section to identify which docs are stale.
|
|
128
|
-
|
|
129
|
-
### Step 3 — Detect Coverage Gaps
|
|
130
|
-
|
|
131
|
-
Scan the codebase for significant features not covered by any doc. Look for:
|
|
132
|
-
- New route files / API endpoints
|
|
133
|
-
- New service classes or modules
|
|
134
|
-
- New database models / schema changes
|
|
135
|
-
- New configuration or infrastructure files
|
|
136
|
-
|
|
137
|
-
If you find undocumented features, propose new docs.
|
|
138
|
-
|
|
139
|
-
### Step 4 — Detect Dead Docs
|
|
140
|
-
|
|
141
|
-
Check each doc's "Key Files" section against the actual filesystem. If key files no longer exist, the doc may be dead. Flag it: "PAYMENT_PROCESSING_DOC.md references 3 files that no longer exist — remove or archive?"
|
|
142
|
-
|
|
143
|
-
### Step 5 — Check Cross-References
|
|
144
|
-
|
|
145
|
-
Read each doc's "Related Features" section. Verify that:
|
|
146
|
-
- Referenced doc filenames still exist
|
|
147
|
-
- The described coupling is still accurate (skim the relevant code)
|
|
148
|
-
|
|
149
|
-
### Step 6 — Report
|
|
150
|
-
|
|
151
|
-
Present a clear report:
|
|
152
|
-
|
|
153
|
-
```
|
|
154
|
-
Audit Results:
|
|
155
|
-
|
|
156
|
-
STALE (source files changed):
|
|
157
|
-
- AUTHENTICATION_DOC.md — src/lib/auth.ts changed (added GitHub provider)
|
|
158
|
-
- API_REFERENCE_DOC.md — 2 new endpoints added
|
|
159
|
-
|
|
160
|
-
COVERAGE GAPS (undocumented features):
|
|
161
|
-
- src/services/notification.ts — no doc covers notifications
|
|
162
|
-
|
|
163
|
-
DEAD DOCS (source files removed):
|
|
164
|
-
- LEGACY_ADMIN_DOC.md — all 4 source files deleted
|
|
165
|
-
|
|
166
|
-
CROSS-REF ISSUES:
|
|
167
|
-
- AUTHENTICATION_DOC.md references BILLING_DOC.md which no longer exists
|
|
168
|
-
|
|
169
|
-
CURRENT (no changes needed):
|
|
170
|
-
- DATABASE_SCHEMA_DOC.md
|
|
171
|
-
- PROJECT_OVERVIEW_DOC.md
|
|
172
|
-
|
|
173
|
-
Proceed with fixes?
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
Wait for user direction, then:
|
|
177
|
-
- Patch stale docs (re-read source files, update affected sections only)
|
|
178
|
-
- Generate new docs for coverage gaps (follow init workflow for each)
|
|
179
|
-
- Flag dead docs for user to confirm deletion
|
|
180
|
-
- Fix cross-reference issues
|
|
181
|
-
- Update manifest: bump versions, update `last_updated`, `last_commit`
|
|
182
|
-
|
|
183
|
-
---
|
|
184
|
-
|
|
185
|
-
## Mode 3: Query
|
|
186
|
-
|
|
187
|
-
**Trigger:** User asks any question about the codebase or its documentation.
|
|
15
|
+
## How to Answer Questions
|
|
188
16
|
|
|
189
17
|
1. Read `vdocs/_manifest.json`
|
|
190
18
|
2. Match the question against `description` and `tags` fields
|
|
191
|
-
3. Read
|
|
192
|
-
4. Answer from
|
|
193
|
-
5. If no
|
|
194
|
-
|
|
195
|
-
---
|
|
196
|
-
|
|
197
|
-
## Naming Convention
|
|
198
|
-
|
|
199
|
-
Files: `FEATURE_NAME_DOC.md` — uppercase, feature-named, `_DOC` suffix.
|
|
200
|
-
|
|
201
|
-
Examples: `PROJECT_OVERVIEW_DOC.md`, `AUTHENTICATION_DOC.md`, `API_REFERENCE_DOC.md`, `DATABASE_SCHEMA_DOC.md`, `PAYMENT_PROCESSING_DOC.md`
|
|
202
|
-
|
|
203
|
-
---
|
|
19
|
+
3. Read matching doc(s) from `vdocs/`
|
|
20
|
+
4. Answer from documented knowledge
|
|
21
|
+
5. If no match or no `vdocs/` folder, suggest running `/vdoc-init`
|
|
22
|
+
6. If docs seem outdated, suggest running `/vdoc-audit`
|
|
204
23
|
|
|
205
24
|
## Rules
|
|
206
25
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
4. **Rich manifest descriptions.** The description is a semantic search index. Pack it with specific terms, technology names, and concepts.
|
|
211
|
-
5. **No hallucination.** Only document what exists in the code. If you're unsure about a decision's rationale, say "Reason: unknown — verify with team" rather than guessing.
|
|
212
|
-
6. **Plan first, always.** Never generate docs without user-approved plan. Even in audit mode, report before patching.
|
|
26
|
+
- Only answer from what's documented — do not hallucinate
|
|
27
|
+
- Reference specific doc filenames in your answers
|
|
28
|
+
- If the question spans multiple docs, read all relevant ones
|