vstack 0.0.0__py3-none-any.whl

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 (119) hide show
  1. vstack/__init__.py +5 -0
  2. vstack/__main__.py +5 -0
  3. vstack/_templates/agents/_partials/agent-skill-boundary.md +5 -0
  4. vstack/_templates/agents/architect/config.yaml +38 -0
  5. vstack/_templates/agents/architect/template.md +84 -0
  6. vstack/_templates/agents/designer/config.yaml +36 -0
  7. vstack/_templates/agents/designer/template.md +99 -0
  8. vstack/_templates/agents/engineer/config.yaml +36 -0
  9. vstack/_templates/agents/engineer/template.md +88 -0
  10. vstack/_templates/agents/product/config.yaml +37 -0
  11. vstack/_templates/agents/product/template.md +87 -0
  12. vstack/_templates/agents/release/config.yaml +35 -0
  13. vstack/_templates/agents/release/template.md +86 -0
  14. vstack/_templates/agents/tester/config.yaml +41 -0
  15. vstack/_templates/agents/tester/template.md +90 -0
  16. vstack/_templates/instructions/git/config.yaml +4 -0
  17. vstack/_templates/instructions/git/template.md +36 -0
  18. vstack/_templates/instructions/python/config.yaml +4 -0
  19. vstack/_templates/instructions/python/template.md +37 -0
  20. vstack/_templates/prompts/code-review/config.yaml +10 -0
  21. vstack/_templates/prompts/code-review/template.md +39 -0
  22. vstack/_templates/skills/_partials/base-branch.md +8 -0
  23. vstack/_templates/skills/_partials/observability-checklist.md +36 -0
  24. vstack/_templates/skills/_partials/run-tests.md +22 -0
  25. vstack/_templates/skills/_partials/skill-context.md +21 -0
  26. vstack/_templates/skills/adr/config.yaml +17 -0
  27. vstack/_templates/skills/adr/template.md +167 -0
  28. vstack/_templates/skills/analyse/config.yaml +16 -0
  29. vstack/_templates/skills/analyse/template.md +188 -0
  30. vstack/_templates/skills/architecture/config.yaml +18 -0
  31. vstack/_templates/skills/architecture/template.md +213 -0
  32. vstack/_templates/skills/cicd/config.yaml +16 -0
  33. vstack/_templates/skills/cicd/template.md +169 -0
  34. vstack/_templates/skills/code-review/config.yaml +16 -0
  35. vstack/_templates/skills/code-review/template.md +180 -0
  36. vstack/_templates/skills/concise/config.yaml +16 -0
  37. vstack/_templates/skills/concise/template.md +128 -0
  38. vstack/_templates/skills/consult/config.yaml +18 -0
  39. vstack/_templates/skills/consult/template.md +195 -0
  40. vstack/_templates/skills/container/config.yaml +17 -0
  41. vstack/_templates/skills/container/template.md +122 -0
  42. vstack/_templates/skills/debug/config.yaml +16 -0
  43. vstack/_templates/skills/debug/template.md +247 -0
  44. vstack/_templates/skills/dependency/config.yaml +18 -0
  45. vstack/_templates/skills/dependency/template.md +293 -0
  46. vstack/_templates/skills/design/config.yaml +16 -0
  47. vstack/_templates/skills/design/template.md +231 -0
  48. vstack/_templates/skills/docs/config.yaml +17 -0
  49. vstack/_templates/skills/docs/template.md +128 -0
  50. vstack/_templates/skills/explore/config.yaml +17 -0
  51. vstack/_templates/skills/explore/template.md +188 -0
  52. vstack/_templates/skills/guardrails/config.yaml +16 -0
  53. vstack/_templates/skills/guardrails/template.md +45 -0
  54. vstack/_templates/skills/incident/config.yaml +17 -0
  55. vstack/_templates/skills/incident/template.md +293 -0
  56. vstack/_templates/skills/inspect/config.yaml +16 -0
  57. vstack/_templates/skills/inspect/template.md +105 -0
  58. vstack/_templates/skills/migrate/config.yaml +17 -0
  59. vstack/_templates/skills/migrate/template.md +298 -0
  60. vstack/_templates/skills/onboard/config.yaml +18 -0
  61. vstack/_templates/skills/onboard/template.md +289 -0
  62. vstack/_templates/skills/openapi/config.yaml +17 -0
  63. vstack/_templates/skills/openapi/template.md +382 -0
  64. vstack/_templates/skills/performance/config.yaml +15 -0
  65. vstack/_templates/skills/performance/template.md +198 -0
  66. vstack/_templates/skills/pr/config.yaml +15 -0
  67. vstack/_templates/skills/pr/template.md +108 -0
  68. vstack/_templates/skills/refactor/config.yaml +18 -0
  69. vstack/_templates/skills/refactor/template.md +283 -0
  70. vstack/_templates/skills/release-notes/config.yaml +16 -0
  71. vstack/_templates/skills/release-notes/template.md +127 -0
  72. vstack/_templates/skills/requirements/config.yaml +17 -0
  73. vstack/_templates/skills/requirements/template.md +187 -0
  74. vstack/_templates/skills/security/config.yaml +17 -0
  75. vstack/_templates/skills/security/template.md +256 -0
  76. vstack/_templates/skills/verify/config.yaml +17 -0
  77. vstack/_templates/skills/verify/template.md +201 -0
  78. vstack/_templates/skills/vision/config.yaml +19 -0
  79. vstack/_templates/skills/vision/template.md +169 -0
  80. vstack/agents/__init__.py +5 -0
  81. vstack/agents/config.py +67 -0
  82. vstack/agents/constants.py +14 -0
  83. vstack/agents/generator.py +20 -0
  84. vstack/artifacts/__init__.py +17 -0
  85. vstack/artifacts/config.py +111 -0
  86. vstack/artifacts/constants.py +6 -0
  87. vstack/artifacts/generator.py +406 -0
  88. vstack/artifacts/models.py +55 -0
  89. vstack/artifacts/protocol.py +50 -0
  90. vstack/cli/__init__.py +3 -0
  91. vstack/cli/commands.py +596 -0
  92. vstack/cli/constants.py +33 -0
  93. vstack/cli/manifest.py +166 -0
  94. vstack/cli/parser.py +156 -0
  95. vstack/constants.py +84 -0
  96. vstack/frontmatter/__init__.py +8 -0
  97. vstack/frontmatter/parser.py +272 -0
  98. vstack/frontmatter/schema.py +142 -0
  99. vstack/frontmatter/serializer.py +208 -0
  100. vstack/instructions/__init__.py +5 -0
  101. vstack/instructions/config.py +21 -0
  102. vstack/instructions/constants.py +9 -0
  103. vstack/instructions/generator.py +13 -0
  104. vstack/main.py +71 -0
  105. vstack/models.py +35 -0
  106. vstack/prompts/__init__.py +5 -0
  107. vstack/prompts/config.py +21 -0
  108. vstack/prompts/constants.py +9 -0
  109. vstack/prompts/generator.py +13 -0
  110. vstack/skills/__init__.py +5 -0
  111. vstack/skills/config.py +58 -0
  112. vstack/skills/constants.py +17 -0
  113. vstack/skills/generator.py +20 -0
  114. vstack/skills/models.py +15 -0
  115. vstack-0.0.0.dist-info/METADATA +725 -0
  116. vstack-0.0.0.dist-info/RECORD +119 -0
  117. vstack-0.0.0.dist-info/WHEEL +4 -0
  118. vstack-0.0.0.dist-info/entry_points.txt +3 -0
  119. vstack-0.0.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,298 @@
1
+ {{SKILL_CONTEXT}}
2
+
3
+ {{BASE_BRANCH}}
4
+
5
+ # migrate — Database Migration Review & Authoring
6
+
7
+ Review or write database migrations for safety, correctness, and zero-downtime
8
+ deployability. No migration ships without a rollback plan.
9
+
10
+ ## Out of scope
11
+
12
+ - ORM model design (use `design`)
13
+ - Performance benchmarking of queries (use `performance`)
14
+ - Full security audit (use `security`)
15
+ - Architecture decisions (use `architecture` + `adr`)
16
+
17
+ **Golden rule: Every migration must be reversible or explicitly documented as
18
+ irreversible with a data-recovery plan.**
19
+
20
+ ______________________________________________________________________
21
+
22
+ ## Step 0: Understand the Change
23
+
24
+ Before reviewing or writing anything, gather context:
25
+
26
+ > **Question:** What schema change is needed and why?
27
+ >
28
+ > - What table(s) / collection(s) are affected?
29
+ > - Approximate row count and data size?
30
+ > - Is this service actively serving production traffic?
31
+ > - What deployment strategy is used (blue/green, rolling, big-bang)?
32
+ > **Default:** Assume rolling deployment, production traffic, safety-first.
33
+
34
+ ```bash
35
+ # Find existing migration files
36
+ find . -type f \( -name '*.sql' -o -name '*migration*' -o -name '*migrate*' \) \
37
+ --exclude-dir=.venv --exclude-dir=node_modules --exclude-dir=dist --exclude-dir=build \
38
+ 2>/dev/null | sort | tail -20
39
+
40
+ # Show migration files changed in this branch
41
+ git diff <base> --stat -- '*.sql' '**migration**' '**migrate**' 2>/dev/null | head -20
42
+
43
+ # Check migration framework in use
44
+ [ -f alembic.ini ] && echo "alembic" || true
45
+ [ -f flyway.conf ] && echo "flyway" || true
46
+ grep -r "migrate\|liquibase\|goose\|dbmate" pyproject.toml package.json go.mod 2>/dev/null | head -5
47
+ ```
48
+
49
+ Document:
50
+
51
+ ```text
52
+ Framework: [alembic | flyway | goose | dbmate | raw SQL | other]
53
+ Table: [affected table(s)]
54
+ Row estimate: [< 1k | 10k | 100k | 1M | 10M+ ]
55
+ Deployment: [rolling | blue-green | big-bang | maintenance window]
56
+ Direction: [new migration | review existing | both]
57
+ ```
58
+
59
+ ______________________________________________________________________
60
+
61
+ ## Step 1: Classify the Migration
62
+
63
+ Classify every DDL operation by risk level:
64
+
65
+ | Operation | Risk | Notes |
66
+ | ---------------------------------------- | --------------- | ---------------------------------- |
67
+ | `CREATE TABLE` | Low | Safe at any time |
68
+ | `ADD COLUMN` nullable, no default | Low | Safe in rolling deploy |
69
+ | `ADD COLUMN` with default (non-volatile) | Medium | May lock on large tables |
70
+ | `ADD COLUMN NOT NULL` without default | **High** | Breaks old app version |
71
+ | `DROP COLUMN` | **High** | Must remove all references first |
72
+ | `RENAME COLUMN` | **High** | Breaks old app version immediately |
73
+ | `ALTER COLUMN` type change | **High** | May require data rewrite |
74
+ | `CREATE INDEX CONCURRENTLY` | Low | Safe, non-blocking |
75
+ | `CREATE INDEX` (without CONCURRENTLY) | **High** | Full table lock |
76
+ | `DROP INDEX` | Low | Safe |
77
+ | `ADD CONSTRAINT` | **High** | Validates all existing rows |
78
+ | `TRUNCATE` / `DROP TABLE` | **Destructive** | Requires explicit confirmation |
79
+
80
+ Assign risk to each operation in the migration:
81
+
82
+ ```text
83
+ Operations:
84
+ 1. [operation] — [Low | Medium | High | Destructive]
85
+ 2. ...
86
+ Overall risk: [Low | Medium | High | Destructive]
87
+ ```
88
+
89
+ ______________________________________________________________________
90
+
91
+ ## Step 2: Zero-Downtime Analysis
92
+
93
+ **Rolling deployments require that the schema be compatible with BOTH the old and
94
+ new version of the application simultaneously.**
95
+
96
+ Check each operation:
97
+
98
+ - [ ] Old app version can read/write with the new schema
99
+ - [ ] New app version can read/write with the old schema (before migration runs)
100
+ - [ ] No `NOT NULL` columns added without a default or backfill step
101
+ - [ ] No column renames (use add → backfill → switch → drop in separate deploys)
102
+ - [ ] No type changes that are incompatible with existing data
103
+
104
+ **Expand/Contract pattern (required for breaking changes):**
105
+
106
+ ```text
107
+ Phase 1 — Expand: Add new column/table alongside old one
108
+ Phase 2 — Migrate: Backfill data; dual-write in application
109
+ Phase 3 — Switch: Application reads from new column
110
+ Phase 4 — Contract: Drop old column in a separate deploy
111
+ ```
112
+
113
+ If the migration violates zero-downtime, flag it:
114
+
115
+ ```text
116
+ ⚠ ZERO-DOWNTIME VIOLATION
117
+ Operation: [operation]
118
+ Problem: [what breaks]
119
+ Fix: [expand/contract steps or maintenance window required]
120
+ ```
121
+
122
+ ______________________________________________________________________
123
+
124
+ ## Step 3: Rollback Plan
125
+
126
+ Every migration must have a defined rollback:
127
+
128
+ ```sql
129
+ -- Forward migration
130
+ ALTER TABLE orders ADD COLUMN discount_cents INTEGER;
131
+
132
+ -- Rollback
133
+ ALTER TABLE orders DROP COLUMN discount_cents;
134
+ ```
135
+
136
+ For destructive operations (DROP, TRUNCATE), rollback is not possible — document this explicitly:
137
+
138
+ ```text
139
+ ⚠ IRREVERSIBLE OPERATION
140
+ Operation: DROP TABLE legacy_sessions
141
+ Pre-condition: Confirm legacy_sessions is unused (grep all references)
142
+ Backup required: Yes — take a snapshot before deploying
143
+ Recovery: Restore from snapshot (RTO: [estimate])
144
+ ```
145
+
146
+ ______________________________________________________________________
147
+
148
+ ## Step 4: Data Integrity
149
+
150
+ Check:
151
+
152
+ - [ ] Foreign key constraints are correct and indexed
153
+ - [ ] `NOT NULL` columns have sensible defaults for existing rows
154
+ - [ ] `UNIQUE` constraints won't fail on existing duplicates
155
+ - [ ] `CHECK` constraints won't reject existing data
156
+ - [ ] Enum additions are safe (additions OK; removals break existing data)
157
+ - [ ] Cascade behavior is intentional (`ON DELETE CASCADE` vs `RESTRICT`)
158
+
159
+ ```sql
160
+ -- Before adding a NOT NULL column: verify no NULLs exist
161
+ SELECT COUNT(*) FROM table WHERE column IS NULL;
162
+
163
+ -- Before adding UNIQUE constraint: verify no duplicates
164
+ SELECT column, COUNT(*) FROM table GROUP BY column HAVING COUNT(*) > 1;
165
+
166
+ -- Before adding CHECK constraint: verify no violations
167
+ SELECT COUNT(*) FROM table WHERE NOT (constraint_expression);
168
+ ```
169
+
170
+ ______________________________________________________________________
171
+
172
+ ## Step 5: Index Safety
173
+
174
+ **Never create an index without `CONCURRENTLY` on a live table.**
175
+
176
+ ```sql
177
+ -- BAD: acquires ACCESS EXCLUSIVE lock
178
+ CREATE INDEX idx_orders_user_id ON orders(user_id);
179
+
180
+ -- GOOD: non-blocking, runs in background
181
+ CREATE INDEX CONCURRENTLY idx_orders_user_id ON orders(user_id);
182
+ ```
183
+
184
+ Caveats for `CONCURRENTLY`:
185
+
186
+ - Cannot run inside a transaction block
187
+ - Takes longer to build
188
+ - May fail if the table is modified heavily during build
189
+
190
+ Check:
191
+
192
+ - [ ] All new indexes use `CONCURRENTLY` (unless in a migration transaction that can afford a lock)
193
+ - [ ] Composite index column order matches query patterns
194
+ - [ ] No redundant indexes (subset of existing composite index)
195
+ - [ ] Partial indexes considered for filtered queries
196
+
197
+ ______________________________________________________________________
198
+
199
+ ## Step 6: Performance on Large Tables
200
+
201
+ For tables with > 100k rows:
202
+
203
+ ```bash
204
+ # Estimate table size
205
+ # PostgreSQL:
206
+ psql -c "SELECT pg_size_pretty(pg_total_relation_size('table_name'));" 2>/dev/null || true
207
+ # MySQL:
208
+ # SELECT table_name, ROUND(((data_length + index_length) / 1024 / 1024), 2) AS 'Size (MB)'
209
+ # FROM information_schema.TABLES WHERE table_schema = DATABASE();
210
+ ```
211
+
212
+ For large tables, prefer:
213
+
214
+ - **Online DDL** (MySQL 8+, PostgreSQL with `CONCURRENTLY`)
215
+ - **Batched backfills** instead of single `UPDATE` statements
216
+ - **Maintenance window** for operations that cannot be made non-blocking
217
+
218
+ Batched backfill pattern:
219
+
220
+ ```sql
221
+ -- Backfill in batches to avoid long-running locks
222
+ DO $$
223
+ DECLARE
224
+ batch_size INT := 10000;
225
+ offset_val INT := 0;
226
+ rows_updated INT;
227
+ BEGIN
228
+ LOOP
229
+ UPDATE table SET new_col = <expr>
230
+ WHERE id IN (
231
+ SELECT id FROM table WHERE new_col IS NULL LIMIT batch_size
232
+ );
233
+ GET DIAGNOSTICS rows_updated = ROW_COUNT;
234
+ EXIT WHEN rows_updated = 0;
235
+ PERFORM pg_sleep(0.1); -- brief pause between batches
236
+ END LOOP;
237
+ END $$;
238
+ ```
239
+
240
+ ______________________________________________________________________
241
+
242
+ ## Step 7: Testing
243
+
244
+ ```bash
245
+ # Run migration tests
246
+ # Framework-specific:
247
+ alembic upgrade head && alembic downgrade -1 2>/dev/null || true
248
+ flyway migrate && flyway undo 2>/dev/null || true
249
+
250
+ # Verify the schema matches models
251
+ # (adjust for your ORM)
252
+ python -c "from app.models import Base; Base.metadata.create_all(engine)" 2>/dev/null || true
253
+ ```
254
+
255
+ Check:
256
+
257
+ - [ ] Migration applies cleanly on a fresh database
258
+ - [ ] Migration applies cleanly on a database with production-representative data
259
+ - [ ] Rollback/downgrade works cleanly
260
+ - [ ] Application tests pass with the new schema
261
+ - [ ] No model/schema drift detected
262
+
263
+ ______________________________________________________________________
264
+
265
+ ## Output
266
+
267
+ Produce a structured migration review:
268
+
269
+ ```text
270
+ Migration Review
271
+ ════════════════
272
+
273
+ File: [migration filename]
274
+ Framework: [framework]
275
+ Risk level: [Low | Medium | High | Destructive]
276
+
277
+ Operations:
278
+ 1. [operation] — [risk] — [safe / unsafe for rolling deploy]
279
+ 2. ...
280
+
281
+ Zero-downtime: [SAFE | UNSAFE — reason]
282
+ Rollback: [SQL rollback statement | IRREVERSIBLE — reason]
283
+
284
+ Issues found:
285
+ 🔴 CRITICAL: [issue + fix]
286
+ 🟡 WARNING: [issue + recommendation]
287
+ 🟢 OK: [what is correct]
288
+
289
+ Recommended migration:
290
+ [corrected or approved SQL]
291
+
292
+ Pre-deploy checklist:
293
+ [ ] Backup taken
294
+ [ ] Migration tested on staging with production data volume
295
+ [ ] Rollback script validated
296
+ [ ] Feature flag in place (if needed for expand/contract)
297
+ [ ] Monitoring alert set for migration duration
298
+ ```
@@ -0,0 +1,18 @@
1
+ name: onboard
2
+ version: 1.0.1
3
+ description: |
4
+ Generate a contributor onboarding guide for a repository. Covers project
5
+ purpose, architecture overview, local dev setup, test commands, contribution
6
+ workflow, and first-task suggestions. Use when asked to "write an onboarding
7
+ guide", "create a contributor guide", "help new devs get started", or
8
+ "document how to contribute". Produces or updates CONTRIBUTING.md and
9
+ supplements README with a dev setup section.
10
+ argument-hint: '[repository or service to document]'
11
+
12
+ license: MIT
13
+ compatibility: Requires a skills-compatible agent with repository file access and terminal command execution when needed.
14
+ metadata:
15
+ owner: vstack
16
+ maturity: stable
17
+ user-invocable: true
18
+ disable-model-invocation: false
@@ -0,0 +1,289 @@
1
+ {{SKILL_CONTEXT}}
2
+
3
+ # onboard — Contributor Onboarding Guide
4
+
5
+ Generate or update onboarding documentation so a new contributor can go from
6
+ clone to first PR with zero tribal knowledge required.
7
+
8
+ ## Out of scope
9
+
10
+ - API design documentation (use `design` or `openapi`)
11
+ - Architecture documentation (use `architecture`)
12
+ - Release notes (use `release-notes`)
13
+ - Test execution (use `verify`)
14
+
15
+ **Golden rule: If a new contributor needs to ask a question that isn't answered
16
+ by the docs, that is a documentation gap — not a knowledge problem.**
17
+
18
+ ______________________________________________________________________
19
+
20
+ ## Step 0: Audit Existing Documentation
21
+
22
+ ```bash
23
+ # Find existing contributor docs
24
+ ls -la README.md CONTRIBUTING.md DEVELOPMENT.md docs/ 2>/dev/null
25
+
26
+ # Check for setup scripts
27
+ ls -la Makefile scripts/ bin/ 2>/dev/null
28
+
29
+ # Check what tooling is defined
30
+ cat Makefile 2>/dev/null | grep -E '^[a-z].*:' | head -20
31
+
32
+ # Detect tech stack
33
+ ls pyproject.toml package.json go.mod Cargo.toml pom.xml 2>/dev/null
34
+ cat pyproject.toml 2>/dev/null | head -30
35
+ cat package.json 2>/dev/null | grep -E '"scripts"' -A 20 | head -25
36
+ ```
37
+
38
+ Document gaps:
39
+
40
+ ```text
41
+ Existing docs: [list of files found]
42
+ Missing: [what's absent — setup steps, test commands, etc.]
43
+ Tech stack: [Python | Node | Go | other]
44
+ Build tool: [Poetry | npm | make | other]
45
+ ```
46
+
47
+ ______________________________________________________________________
48
+
49
+ ## Step 1: Understand the Project
50
+
51
+ Read the codebase to extract onboarding-relevant facts:
52
+
53
+ ```bash
54
+ # Project purpose
55
+ head -50 README.md 2>/dev/null
56
+
57
+ # Project structure
58
+ find . -maxdepth 3 -type d \
59
+ | grep -v node_modules | grep -v .venv | grep -v __pycache__ \
60
+ | grep -v .git | grep -v dist | grep -v build \
61
+ | sort | head -40
62
+
63
+ # Dependencies and Python version
64
+ cat pyproject.toml 2>/dev/null | grep -E 'python|requires|dependencies' | head -20
65
+ cat .python-version 2>/dev/null
66
+ cat .nvmrc 2>/dev/null
67
+ cat .node-version 2>/dev/null
68
+
69
+ # CI configuration — what does CI run?
70
+ cat .github/workflows/*.yml 2>/dev/null | grep -E 'run:|uses:' | head -30
71
+ ```
72
+
73
+ ______________________________________________________________________
74
+
75
+ ## Step 2: Verify the Setup Steps Work
76
+
77
+ Before documenting setup steps, verify they actually work:
78
+
79
+ ```bash
80
+ # Attempt setup from scratch perspective
81
+ # (Do not actually destroy the current environment — read and verify commands)
82
+
83
+ # Check prerequisites are documented
84
+ which python3 || which python && python --version
85
+ which poetry && poetry --version
86
+ which node && node --version
87
+ which make && make --version
88
+ ```
89
+
90
+ For each setup step, confirm:
91
+
92
+ - [ ] The command exists and works
93
+ - [ ] Dependencies are version-pinned or constrained
94
+ - [ ] Environment variables are documented (use `.env.example` if present)
95
+ - [ ] The setup completes in < 5 minutes on a fresh machine
96
+
97
+ ______________________________________________________________________
98
+
99
+ ## Step 3: Extract Test Commands
100
+
101
+ ```bash
102
+ # Find all test commands
103
+ cat Makefile 2>/dev/null | grep -E 'test|lint|check|verify' | head -20
104
+ cat pyproject.toml 2>/dev/null | grep -E '\[tool\.' -A 5 | head -40
105
+ cat package.json 2>/dev/null | python3 -c "import sys,json; d=json.load(sys.stdin); [print(k,':',v) for k,v in d.get('scripts',{}).items()]" 2>/dev/null
106
+ ```
107
+
108
+ Document the minimal set a contributor needs:
109
+
110
+ ```text
111
+ Quick check (before every commit): [command]
112
+ Full test suite: [command]
113
+ Lint only: [command]
114
+ Type check only: [command]
115
+ Single test: [command pattern]
116
+ ```
117
+
118
+ ______________________________________________________________________
119
+
120
+ ## Step 4: Identify "Good First Issues"
121
+
122
+ ```bash
123
+ # Find TODOs and FIXMEs
124
+ grep -r -n "TODO\|FIXME\|HACK\|good.first" \
125
+ --include='*.py' --include='*.ts' --include='*.go' --include='*.md' \
126
+ --exclude-dir=node_modules --exclude-dir=.venv --exclude-dir=.git \
127
+ . 2>/dev/null | head -20
128
+
129
+ # Check GitHub issues if available
130
+ # (manual step — list any open "good first issue" labels)
131
+ ```
132
+
133
+ ______________________________________________________________________
134
+
135
+ ## Step 5: Write the Onboarding Guide
136
+
137
+ Produce or update `CONTRIBUTING.md` with the following sections:
138
+
139
+ ______________________________________________________________________
140
+
141
+ ````markdown
142
+ # Contributing to [Project Name]
143
+
144
+ Welcome. This guide gets you from zero to a merged PR.
145
+
146
+ ## Prerequisites
147
+
148
+ | Tool | Version | Install |
149
+ |------|---------|---------|
150
+ | Python | >= X.Y | [pyenv](https://github.com/pyenv/pyenv) |
151
+ | Poetry | >= X.Y | `pip install poetry` |
152
+ | make | any | system package manager |
153
+
154
+ ## Setup
155
+
156
+ ```bash
157
+ git clone https://github.com/org/repo
158
+ cd repo
159
+ [setup command — e.g. make bootstrap or poetry install]
160
+ ```
161
+
162
+ Verify setup:
163
+
164
+ ```bash
165
+ [verify command — e.g. make check or poetry run pytest]
166
+ ```
167
+
168
+ Expected output: `[N tests passed]`
169
+
170
+ ## Project Structure
171
+
172
+ ```
173
+ [directory tree — top 2 levels with brief descriptions]
174
+ ```
175
+
176
+ ## Development Workflow
177
+
178
+ ### Making changes
179
+
180
+ 1. Create a branch: `git checkout -b [type]/[short-description]`
181
+ - `feat/` — new feature
182
+ - `fix/` — bug fix
183
+ - `chore/` — maintenance
184
+ 1. Make your change
185
+ 1. Run checks: `[check command]`
186
+ 1. Commit: `git commit -m "[type]: [description]"`
187
+ 1. Push and open a PR
188
+
189
+ ### Before every commit
190
+
191
+ ```bash
192
+ [pre-commit or check command]
193
+ ```
194
+
195
+ This runs: [lint, type check, tests — describe what is checked]
196
+
197
+ ## Testing
198
+
199
+ ```bash
200
+ # Run all tests
201
+ [full test command]
202
+
203
+ # Run a single test file
204
+ [single test command]
205
+
206
+ # Run with coverage
207
+ [coverage command]
208
+ ```
209
+
210
+ Tests live in `tests/`. Mirror the source structure: `src/foo/bar.py` → `tests/foo/test_bar.py`.
211
+
212
+ ## Environment Variables
213
+
214
+ Copy `.env.example` to `.env` and fill in values:
215
+
216
+ ```bash
217
+ cp .env.example .env
218
+ ```
219
+
220
+ | Variable | Required | Description |
221
+ | ---------- | -------- | ------------- |
222
+ | `VAR_NAME` | Yes | [description] |
223
+
224
+ ## Architecture Overview
225
+
226
+ \[2–4 sentences describing the main components and how they interact.
227
+ Link to docs/architecture/architecture.md for details.\]
228
+
229
+ ## Good First Issues
230
+
231
+ \[List 3–5 concrete starting points:
232
+
233
+ - A TODO in the code
234
+ - A missing test
235
+ - A documentation gap
236
+ - A small enhancement\]
237
+
238
+ ## Getting Help
239
+
240
+ [Slack channel / GitHub Discussions / email — whatever is appropriate]
241
+
242
+ ````
243
+
244
+ ______________________________________________________________________
245
+
246
+ ______________________________________________________________________
247
+
248
+ ## Step 6: Supplement README (if needed)
249
+
250
+ If README lacks a dev setup section, add a minimal one linking to CONTRIBUTING.md:
251
+
252
+ ````markdown
253
+ ## development
254
+
255
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for setup, testing, and contribution guidelines.
256
+
257
+ Quick start:
258
+
259
+ ```bash
260
+ [one-liner setup command]
261
+ [one-liner test command]
262
+ ```
263
+
264
+ ````
265
+
266
+ ______________________________________________________________________
267
+
268
+ ## Output
269
+
270
+ ```text
271
+ Onboarding Guide Summary
272
+ ════════════════════════
273
+
274
+ Files produced/updated:
275
+ ✅ CONTRIBUTING.md — [new | updated]
276
+ ✅ README.md — [updated dev section | no change needed]
277
+
278
+ Coverage:
279
+ [ ] Prerequisites documented
280
+ [ ] Setup steps verified
281
+ [ ] Test commands documented
282
+ [ ] Environment variables documented
283
+ [ ] Project structure explained
284
+ [ ] Contribution workflow explained
285
+ [ ] Good first issues listed
286
+
287
+ Gaps remaining (if any):
288
+ [anything that could not be determined automatically]
289
+ ```
@@ -0,0 +1,17 @@
1
+ name: openapi
2
+ version: 1.0.1
3
+ description: |
4
+ Write and review OpenAPI 3.1 specifications. Covers resource naming, HTTP
5
+ method semantics, status codes, error conventions, pagination, versioning,
6
+ security schemes, and schema validation. Use when asked to "write an OpenAPI
7
+ spec", "review this API spec", "add an endpoint to the spec", or "validate
8
+ this OpenAPI file".
9
+ argument-hint: '[API or spec file to write or review]'
10
+
11
+ license: MIT
12
+ compatibility: Requires a skills-compatible agent with repository file access and terminal command execution when needed.
13
+ metadata:
14
+ owner: vstack
15
+ maturity: stable
16
+ user-invocable: true
17
+ disable-model-invocation: false