@vegastack/skills 0.5.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -2
- package/dist/index.js +8 -35
- package/package.json +1 -1
- package/skill/architect/SKILL.md +68 -0
- package/skill/architect/agents/openai.yaml +4 -0
- package/skill/architect/assets/adr-template.md +21 -0
- package/skill/architect/assets/arch-template.md +20 -0
- package/skill/architect/references/advisory.md +102 -0
- package/skill/architect/references/ai-agents.md +95 -0
- package/skill/architect/references/data.md +90 -0
- package/skill/architect/references/infra.md +128 -0
- package/skill/architect/references/mobile.md +78 -0
- package/skill/architect/references/pinned-facts.md +108 -0
- package/skill/architect/references/principles.md +91 -0
- package/skill/architect/references/project-profile.md +37 -0
- package/skill/architect/references/security.md +97 -0
- package/skill/architect/references/stack.md +38 -0
- package/skill/architect/references/web.md +152 -0
- package/skill/architect/refresh/REFRESH.md +29 -0
- package/skill/architect/refresh/sources.json +244 -0
- package/skill/dev-implement/SKILL.md +62 -0
- package/skill/dev-implement/agents/openai.yaml +4 -0
- package/skill/dev-implement/refresh/REFRESH.md +3 -0
- package/skill/dev-implement/refresh/sources.json +6 -0
- package/skill/dev-intake/SKILL.md +62 -0
- package/skill/dev-intake/agents/openai.yaml +4 -0
- package/skill/dev-intake/references/brief-template.md +56 -0
- package/skill/dev-intake/refresh/REFRESH.md +3 -0
- package/skill/dev-intake/refresh/sources.json +6 -0
- package/skill/dev-setup/SKILL.md +65 -0
- package/skill/dev-setup/agents/openai.yaml +4 -0
- package/skill/dev-setup/assets/agents-section.md.template +9 -0
- package/skill/dev-setup/assets/dev-profile.md.template +24 -0
- package/skill/dev-setup/references/harness-facts.md +22 -0
- package/skill/dev-setup/refresh/REFRESH.md +13 -0
- package/skill/dev-setup/refresh/sources.json +152 -0
- package/skill/dev-ship/SKILL.md +33 -0
- package/skill/dev-ship/agents/openai.yaml +4 -0
- package/skill/dev-ship/refresh/REFRESH.md +3 -0
- package/skill/dev-ship/refresh/sources.json +6 -0
- package/skill/skill-maintainer/SKILL.md +9 -10
- package/skill/skill-maintainer/references/release-ops.md +12 -16
- package/skill/skill-maintainer/refresh/REFRESH.md +4 -4
- package/skill/skillify/SKILL.md +38 -48
- package/skill/skillify/assets/templates/REFRESH.md.template +5 -10
- package/skill/skillify/assets/templates/SKILL.md.template +1 -0
- package/skill/skillify/assets/templates/skill.test.ts.template +11 -24
- package/skill/skillify/assets/templates/sources.json.template +1 -1
- package/skill/skillify/assets/templates/trigger-queries.json.template +1 -0
- package/skill/skillify/references/authoring.md +20 -14
- package/skill/skillify/refresh/REFRESH.md +1 -1
- package/skill/skillify/scripts/scaffold-skill.mjs +75 -17
- package/skill-integrity.json +66 -53
- package/skill/arch-guardian/SKILL.md +0 -84
- package/skill/arch-guardian/agents/openai.yaml +0 -4
- package/skill/arch-guardian/assets/adr-template.md +0 -25
- package/skill/arch-guardian/assets/answers-example.json +0 -10
- package/skill/arch-guardian/assets/architecture-profile.json +0 -13
- package/skill/arch-guardian/assets/architecture-profile.schema.json +0 -31
- package/skill/arch-guardian/assets/deployment-review-template.md +0 -24
- package/skill/arch-guardian/assets/service-design-template.md +0 -33
- package/skill/arch-guardian/assets/threat-model-template.md +0 -34
- package/skill/arch-guardian/references/advisory-report.md +0 -65
- package/skill/arch-guardian/references/architecture/agent-product.md +0 -22
- package/skill/arch-guardian/references/architecture/ai-cost.md +0 -24
- package/skill/arch-guardian/references/architecture/ai-data-boundaries.md +0 -21
- package/skill/arch-guardian/references/architecture/ai-evals.md +0 -28
- package/skill/arch-guardian/references/architecture/connectors-sandbox.md +0 -39
- package/skill/arch-guardian/references/architecture/data-memory.md +0 -25
- package/skill/arch-guardian/references/architecture/delivery-operations.md +0 -34
- package/skill/arch-guardian/references/architecture/durable-execution.md +0 -45
- package/skill/arch-guardian/references/architecture/flutter.md +0 -26
- package/skill/arch-guardian/references/architecture/foundation.md +0 -31
- package/skill/arch-guardian/references/architecture/hosting-reliability.md +0 -37
- package/skill/arch-guardian/references/architecture/identity-tenancy.md +0 -37
- package/skill/arch-guardian/references/architecture/model-lifecycle.md +0 -20
- package/skill/arch-guardian/references/architecture/models-observability.md +0 -23
- package/skill/arch-guardian/references/architecture/realtime-channels.md +0 -16
- package/skill/arch-guardian/references/architecture/security-privacy.md +0 -27
- package/skill/arch-guardian/references/architecture/topology-monorepo.md +0 -47
- package/skill/arch-guardian/references/architecture/web.md +0 -29
- package/skill/arch-guardian/references/foundation-compatibility.json +0 -44
- package/skill/arch-guardian/references/golden-patterns.md +0 -43
- package/skill/arch-guardian/references/profile-governance.md +0 -40
- package/skill/arch-guardian/references/rule-model.json +0 -36
- package/skill/arch-guardian/references/workflows.md +0 -48
- package/skill/arch-guardian/refresh/REFRESH.md +0 -47
- package/skill/arch-guardian/refresh/sources.json +0 -1171
- package/skill/arch-guardian/scripts/lib.mjs +0 -48
- package/skill/arch-guardian/scripts/profile-tool.mjs +0 -217
- package/skill/arch-guardian/scripts/refresh-evidence.mjs +0 -366
- package/skill/arch-guardian/scripts/schema-validate.mjs +0 -63
- package/skill/arch-guardian/scripts/validate-profile.mjs +0 -65
- package/skill/arch-guardian/scripts/verify-corpus.mjs +0 -136
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dev-setup
|
|
3
|
+
description: Bootstrap a project for issue-driven agent development. Use when asked to "set up the dev workflow", "bootstrap this project for agents", "install the dev workflow here", or invoked as dev-setup; also run automatically when dev-intake, dev-implement, or dev-ship find no .vegastack/dev.md in the project. Creates the project profile, the AGENTS.md dev section plus CLAUDE.md import, the five workflow labels on the GitHub repo, and the decision register. Not for architecture profiles or advice (that is architect and .vegastack/arch.md), not for authoring skills, not for repos without git.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# dev-setup
|
|
7
|
+
|
|
8
|
+
Re-runnable bootstrap that gives a project everything the dev workflow needs: a profile file holding the knobs, a thin AGENTS.md section that both Claude Code and Codex read, the GitHub labels, and the decision register. The other dev skills call this automatically when `.vegastack/dev.md` is missing, then continue with their original request.
|
|
9
|
+
|
|
10
|
+
Nearest neighbor: `architect` owns `.vegastack/arch.md` (architecture facts and advice); dev-setup owns `.vegastack/dev.md` (workflow facts and knobs). When arch.md exists, point dev.md at it for stack facts instead of duplicating them.
|
|
11
|
+
|
|
12
|
+
## Step 1 — Detect before asking
|
|
13
|
+
|
|
14
|
+
Facts are your job; decisions are the user's. Gather these silently and present findings as "here's what I found — correct me if wrong", never as open questions:
|
|
15
|
+
|
|
16
|
+
| What | How |
|
|
17
|
+
|---|---|
|
|
18
|
+
| repo, default branch | `git remote get-url origin` · `gh repo view --json nameWithOwner,defaultBranchRef` |
|
|
19
|
+
| gh authenticated | `gh auth status` |
|
|
20
|
+
| stack and commands | package.json scripts, lockfiles, framework configs |
|
|
21
|
+
| web app (UI evidence relevant) | framework dependencies (next, react, vue, …) |
|
|
22
|
+
| existing files | AGENTS.md, CLAUDE.md, `.vegastack/dev.md`, `.vegastack/arch.md`, docs/decisions.md |
|
|
23
|
+
| existing labels | `gh label list` |
|
|
24
|
+
|
|
25
|
+
Not a git repo, or no origin remote: stop and say exactly what is missing. A half-installed workflow is worse than none.
|
|
26
|
+
|
|
27
|
+
## Step 2 — The interview
|
|
28
|
+
|
|
29
|
+
Ask with your harness's question tool — AskUserQuestion in Claude Code, `request_user_input` in Codex where the mode allows it (availability details: [harness-facts](references/harness-facts.md)). When no question tool is available (headless run, gated mode), write the defaults, mark every unconfirmed knob `# TODO confirm`, and say so in your reply — a wrong invented preference costs more than a TODO.
|
|
30
|
+
|
|
31
|
+
**Round A — confirm the detected facts** in one compact summary (repo, stack, commands, web app or not). Ask only about what detection could not fill.
|
|
32
|
+
|
|
33
|
+
**Round B — the four workflow knobs**, recommended default first:
|
|
34
|
+
|
|
35
|
+
1. Review of finished work: **subagent** · cross-agent (Codex↔Claude) · cross-agent only on `risky` issues
|
|
36
|
+
2. Proof for UI work: **playwright screenshots** · none
|
|
37
|
+
3. Gates: **3** (approve → PR → merge as separate user words) · 2 (approve → one "ship it" covers PR and merge)
|
|
38
|
+
4. Tests: **required for every change** · required for logic changes only
|
|
39
|
+
|
|
40
|
+
**Round C — only when the situation exists:**
|
|
41
|
+
|
|
42
|
+
- AGENTS.md already has content → append the marked section (default) or show a merge proposal first
|
|
43
|
+
- CLAUDE.md already has content → add the `@AGENTS.md` import as its first line (default) or move its content into AGENTS.md and leave only the import
|
|
44
|
+
- Evidence repo for UI screenshots → default `<owner>/dev-review-assets`; offer to create it (`gh repo create --private`) if missing
|
|
45
|
+
- Different label names or a different decision-register path, if the user brings it up
|
|
46
|
+
|
|
47
|
+
Everything else — merge style, branch naming, the stop-and-ask list — takes its documented default straight into dev.md. The profile is plain text the user can edit anytime; the interview is a convenience, not the source of truth.
|
|
48
|
+
|
|
49
|
+
## Step 3 — Write
|
|
50
|
+
|
|
51
|
+
| Target | Action |
|
|
52
|
+
|---|---|
|
|
53
|
+
| `.vegastack/dev.md` | render [dev-profile template](assets/dev-profile.md.template) with the answers |
|
|
54
|
+
| `AGENTS.md` | create it, or insert/replace only the block between `<!-- vsk-dev:start -->` and `<!-- vsk-dev:end -->` using the [agents-section template](assets/agents-section.md.template); content outside the markers is the user's and stays untouched |
|
|
55
|
+
| `CLAUDE.md` | ensure its first line is `@AGENTS.md` — Claude Code does not read AGENTS.md natively and needs this import ([harness-facts](references/harness-facts.md)); create the file when absent |
|
|
56
|
+
| labels | `gh label create <name> --color <hex> --description "<text>"`, skipping ones that exist: `needs-you` FBCA04 (waiting on the user) · `ready` 0E8A16 (approved, agent may start) · `working` 1D76DB (claimed by an agent) · `for-you` 5319E7 (result awaiting user review) · `risky` B60205 (security, money, data, or production) |
|
|
57
|
+
| decision register | create the file the `decisions:` knob names (default `docs/decisions.md`) with a two-line header and one example entry, when missing; a project with an existing register keeps it and the knob points there |
|
|
58
|
+
|
|
59
|
+
## Step 4 — Report
|
|
60
|
+
|
|
61
|
+
One summary: what was created, what was skipped and why, what remains TODO. When `gh` was unauthenticated, print the exact `gh auth login` and `gh label create` commands the user can run later, and name the gap plainly.
|
|
62
|
+
|
|
63
|
+
## Re-runs
|
|
64
|
+
|
|
65
|
+
Re-running is safe and is how knobs get revisited: show what differs per target and change only what the user confirms. The marked block is the only part of AGENTS.md this skill owns. Hand edits inside dev.md win — read them and keep them; the templates are for creation, not for resetting.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<!-- vsk-dev:start -->
|
|
2
|
+
## Dev workflow
|
|
3
|
+
|
|
4
|
+
Read `.vegastack/dev.md` for this project's stack, commands, and workflow knobs.
|
|
5
|
+
|
|
6
|
+
Work flows through GitHub issues. An issue labeled `ready` carries the user's recorded approval and a complete brief — implement it end to end per the `dev-implement` skill, post the evidence in the issue, and hand it back with `for-you`. Start only on `ready` issues. These five labels are the whole workflow vocabulary — use them and no others: `needs-you` (waiting on the user) → `ready` (approved) → `working` (claimed by an agent) → `for-you` (result awaiting user review); `risky` flags security, money, data, or production work.
|
|
7
|
+
|
|
8
|
+
The user holds the gates: they approve the issue, say the word for a PR, and say a separate word to merge (see `gates` in dev.md). Material decisions get one dated line in the decision register dev.md names (`decisions:` knob).
|
|
9
|
+
<!-- vsk-dev:end -->
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Dev profile — {{owner/repo}}
|
|
2
|
+
|
|
3
|
+
repo: {{owner/repo}} · default branch {{branch}}
|
|
4
|
+
stack: {{one line, or "see .vegastack/arch.md"}}
|
|
5
|
+
commands: test `{{test}}` · build `{{build}}` · dev `{{dev}}`
|
|
6
|
+
|
|
7
|
+
## Knobs
|
|
8
|
+
|
|
9
|
+
review: subagent # subagent | cross-agent | cross-agent-risky
|
|
10
|
+
ui-evidence: playwright # playwright | none
|
|
11
|
+
evidence-repo: {{owner}}/dev-review-assets
|
|
12
|
+
gates: 3 # 3 = approve/PR/merge · 2 = approve/ship
|
|
13
|
+
tests: required # required | logic-only
|
|
14
|
+
merge: squash
|
|
15
|
+
branch: <type>/<issue>-<slug> # type: feat | fix | docs | chore | refactor
|
|
16
|
+
decisions: docs/decisions.md
|
|
17
|
+
|
|
18
|
+
## Stop and ask
|
|
19
|
+
|
|
20
|
+
Dark execution ends and the user decides when work would involve: a change of scope or product behavior, a significant new dependency or runtime, spending money, anything destructive or touching production, or a blocker the brief cannot resolve.
|
|
21
|
+
|
|
22
|
+
## Project rules
|
|
23
|
+
|
|
24
|
+
- {{project-specific rules, one per line; delete this section if none}}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Harness facts
|
|
2
|
+
|
|
3
|
+
Verified mechanics of the two harnesses this workflow targets. Everything here is volatile — vendors change these — so each claim carries its source; the refresh contract tracks them. Verified 2026-08-27.
|
|
4
|
+
|
|
5
|
+
## Claude Code
|
|
6
|
+
|
|
7
|
+
- Claude Code does **not** read AGENTS.md natively. The documented pattern is a CLAUDE.md that imports it: a line containing `@AGENTS.md` (import syntax is `@path/to/file`, resolved relative to the containing file, maximum 4 hops of recursion; `@` inside backticks stays literal). <!-- source: CC-MEMORY -->
|
|
8
|
+
- `CLAUDE.local.md` in the project root loads after CLAUDE.md and is meant to be gitignored — leave it alone; it is the user's personal file. <!-- source: CC-MEMORY -->
|
|
9
|
+
- Project skills load from `.claude/skills/<name>/SKILL.md`; personal skills from `~/.claude/skills/`. <!-- source: CC-SKILLS -->
|
|
10
|
+
- The structured question tool is **AskUserQuestion**. It is unavailable in non-interactive runs (`claude -p`); a configurable timeout can auto-submit pre-selected options. <!-- source: CC-TOOLS -->
|
|
11
|
+
|
|
12
|
+
## Codex
|
|
13
|
+
|
|
14
|
+
- Codex reads AGENTS.md natively: from `~/.codex/` (global; `AGENTS.override.md` wins over `AGENTS.md`), then from the repo root down to the working directory, one file per directory, concatenated root-first so closer files override. Combined size is capped by `project_doc_max_bytes`, default 32 KiB. There is **no** `@file` import mechanism — layering is directory-based only. <!-- source: CODEX-AGENTS -->
|
|
15
|
+
- Skills load from `.agents/skills/` in each directory from the working directory up to the repo root, plus `~/.agents/skills/` for the user. Frontmatter requires only `name` and `description`; an optional `agents/openai.yaml` adds display metadata and invocation policy. <!-- source: CODEX-SKILLS -->
|
|
16
|
+
- The structured question tool is **`request_user_input`** — collaboration-mode-gated (available in Plan mode; elsewhere it fails fast with a clear error, and it is not available to subagents). Community posts mention an "ask_user_question"/"clarify" tool; that is a proposal, not a shipped tool — do not design against it. <!-- source: CODEX-SKILLS -->
|
|
17
|
+
- Non-interactive mode is `codex exec`: fully unattended, human-input tools unavailable, AGENTS.md discovery unchanged. <!-- source: CODEX-EXEC -->
|
|
18
|
+
|
|
19
|
+
## What this means for the dev skills
|
|
20
|
+
|
|
21
|
+
- AGENTS.md is the shared instruction file; the one-line CLAUDE.md import makes it reach Claude Code. Keep the marked section small — it counts against Codex's 32 KiB budget along with everything else in AGENTS.md.
|
|
22
|
+
- Any skill that wants to ask the user must degrade cleanly: no question tool available → use documented defaults, mark them `# TODO confirm`, and say so.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Refresh contract — dev-setup
|
|
2
|
+
|
|
3
|
+
Instructions for the scheduled refresh agent (and any human running a manual refresh). This file plus `sources.json` is the complete freshness contract for this skill.
|
|
4
|
+
|
|
5
|
+
## What this skill claims
|
|
6
|
+
|
|
7
|
+
- **Durable rules** (SKILL.md, assets): the detect-then-ask discipline, the interview rounds and knobs, the marked-section AGENTS.md contract, the label set, the defaults-plus-TODO fallback. Versionless; the refresh agent NEVER edits these — if evidence invalidates one, open an issue quoting it.
|
|
8
|
+
- **Volatile facts**: everything in `references/harness-facts.md` — Claude Code memory/import/skill/question-tool mechanics and Codex AGENTS.md/skills/question-tool/exec mechanics. That file is the only refresh-tracked file; its sentences carry `<!-- source: SOURCE-ID -->` markers matching the registry.
|
|
9
|
+
|
|
10
|
+
## How to refresh
|
|
11
|
+
|
|
12
|
+
1. Run the shared runner against this registry; on drift, read the changed page and propose edits to the marked sentences in `references/harness-facts.md` — and to the three harness-mechanism mentions in SKILL.md that mirror it (the two question tools in Step 2, the `@AGENTS.md` import in Step 3) — in the same PR as the registry update.
|
|
13
|
+
2. Never auto-apply harness behavior changes; a human reviews — these facts change what dev-setup writes into user projects.
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"retrievalBaseline": "2026-08-27",
|
|
4
|
+
"policy": {
|
|
5
|
+
"criticalTopics": [
|
|
6
|
+
"claude-code-memory",
|
|
7
|
+
"codex-agents-md"
|
|
8
|
+
],
|
|
9
|
+
"defaultChecksumScope": "html-text-v1",
|
|
10
|
+
"offline": "Use cached metadata only; fail closed when a critical entry is missing or older than thresholdDays.",
|
|
11
|
+
"drift": "Any drift requires reading the changed page and a human-reviewed PR updating references/harness-facts.md; never auto-apply.",
|
|
12
|
+
"copyright": "Store claim metadata, URLs, hashes, and concise excerpts only; never archive third-party documentation corpora.",
|
|
13
|
+
"cadence": "weekly scheduled-agent refresh; thresholdDays must be >= 14 (2x cadence) so a single missed run never breaches a threshold"
|
|
14
|
+
},
|
|
15
|
+
"sources": [
|
|
16
|
+
{
|
|
17
|
+
"id": "CC-MEMORY",
|
|
18
|
+
"service": "Claude Code memory files and imports (CLAUDE.md, AGENTS.md, @imports)",
|
|
19
|
+
"kind": "official-docs",
|
|
20
|
+
"stability": "vendor-docs",
|
|
21
|
+
"thresholdDays": 14,
|
|
22
|
+
"critical": true,
|
|
23
|
+
"urls": {
|
|
24
|
+
"primary": "https://code.claude.com/docs/en/memory.md"
|
|
25
|
+
},
|
|
26
|
+
"versionDetection": {
|
|
27
|
+
"type": "manual-review"
|
|
28
|
+
},
|
|
29
|
+
"topics": [
|
|
30
|
+
"claude-code-memory"
|
|
31
|
+
],
|
|
32
|
+
"affected": [
|
|
33
|
+
"references/harness-facts.md",
|
|
34
|
+
"SKILL.md"
|
|
35
|
+
],
|
|
36
|
+
"checksum": "e989818335ae45abb756df759d4859aa9daa6764393a3e39c46e505f181a33b6",
|
|
37
|
+
"retrievedAt": "2026-08-27T08:19:24.132Z"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "CC-SKILLS",
|
|
41
|
+
"service": "Claude Code skill discovery locations and frontmatter",
|
|
42
|
+
"kind": "official-docs",
|
|
43
|
+
"stability": "vendor-docs",
|
|
44
|
+
"thresholdDays": 14,
|
|
45
|
+
"critical": false,
|
|
46
|
+
"urls": {
|
|
47
|
+
"primary": "https://code.claude.com/docs/en/skills.md"
|
|
48
|
+
},
|
|
49
|
+
"versionDetection": {
|
|
50
|
+
"type": "manual-review"
|
|
51
|
+
},
|
|
52
|
+
"topics": [
|
|
53
|
+
"claude-code-skills"
|
|
54
|
+
],
|
|
55
|
+
"affected": [
|
|
56
|
+
"references/harness-facts.md"
|
|
57
|
+
],
|
|
58
|
+
"checksum": "8d03177dcc10ffbff5313c43023da15ff1059197c1fff05eb9dba3fe6361c767",
|
|
59
|
+
"retrievedAt": "2026-08-27T08:19:24.132Z"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"id": "CC-TOOLS",
|
|
63
|
+
"service": "Claude Code AskUserQuestion tool behavior",
|
|
64
|
+
"kind": "official-docs",
|
|
65
|
+
"stability": "vendor-docs",
|
|
66
|
+
"thresholdDays": 14,
|
|
67
|
+
"critical": false,
|
|
68
|
+
"urls": {
|
|
69
|
+
"primary": "https://code.claude.com/docs/en/tools-reference.md"
|
|
70
|
+
},
|
|
71
|
+
"versionDetection": {
|
|
72
|
+
"type": "manual-review"
|
|
73
|
+
},
|
|
74
|
+
"topics": [
|
|
75
|
+
"claude-code-tools"
|
|
76
|
+
],
|
|
77
|
+
"affected": [
|
|
78
|
+
"references/harness-facts.md",
|
|
79
|
+
"SKILL.md"
|
|
80
|
+
],
|
|
81
|
+
"checksum": "3bdd8429e76be8213e9263103134ac7b6892f4574820e40bf84032a98c5d0aeb",
|
|
82
|
+
"retrievedAt": "2026-08-27T08:19:24.132Z"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"id": "CODEX-AGENTS",
|
|
86
|
+
"service": "Codex AGENTS.md discovery, merging, and size cap",
|
|
87
|
+
"kind": "official-docs",
|
|
88
|
+
"stability": "vendor-docs",
|
|
89
|
+
"thresholdDays": 14,
|
|
90
|
+
"critical": true,
|
|
91
|
+
"urls": {
|
|
92
|
+
"primary": "https://learn.chatgpt.com/docs/agent-configuration/agents-md.md"
|
|
93
|
+
},
|
|
94
|
+
"versionDetection": {
|
|
95
|
+
"type": "manual-review"
|
|
96
|
+
},
|
|
97
|
+
"topics": [
|
|
98
|
+
"codex-agents-md"
|
|
99
|
+
],
|
|
100
|
+
"affected": [
|
|
101
|
+
"references/harness-facts.md"
|
|
102
|
+
],
|
|
103
|
+
"checksum": "9eacb3d812b87be4acc1213af58ded35e8f387bcf1589c203bbb452ead0c4774",
|
|
104
|
+
"retrievedAt": "2026-08-27T08:19:24.132Z"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"id": "CODEX-SKILLS",
|
|
108
|
+
"service": "Codex skills discovery, frontmatter, and request_user_input gating",
|
|
109
|
+
"kind": "official-docs",
|
|
110
|
+
"stability": "vendor-docs",
|
|
111
|
+
"thresholdDays": 14,
|
|
112
|
+
"critical": false,
|
|
113
|
+
"urls": {
|
|
114
|
+
"primary": "https://learn.chatgpt.com/docs/build-skills.md"
|
|
115
|
+
},
|
|
116
|
+
"versionDetection": {
|
|
117
|
+
"type": "manual-review"
|
|
118
|
+
},
|
|
119
|
+
"topics": [
|
|
120
|
+
"codex-skills"
|
|
121
|
+
],
|
|
122
|
+
"affected": [
|
|
123
|
+
"references/harness-facts.md",
|
|
124
|
+
"SKILL.md"
|
|
125
|
+
],
|
|
126
|
+
"checksum": "44aa6d490f4567c0b1fb064deab642bfac590f0e721228e0c53fe738db191026",
|
|
127
|
+
"retrievedAt": "2026-08-27T08:19:24.132Z"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"id": "CODEX-EXEC",
|
|
131
|
+
"service": "Codex non-interactive mode (codex exec)",
|
|
132
|
+
"kind": "official-docs",
|
|
133
|
+
"stability": "vendor-docs",
|
|
134
|
+
"thresholdDays": 14,
|
|
135
|
+
"critical": false,
|
|
136
|
+
"urls": {
|
|
137
|
+
"primary": "https://learn.chatgpt.com/docs/non-interactive-mode.md"
|
|
138
|
+
},
|
|
139
|
+
"versionDetection": {
|
|
140
|
+
"type": "manual-review"
|
|
141
|
+
},
|
|
142
|
+
"topics": [
|
|
143
|
+
"codex-exec"
|
|
144
|
+
],
|
|
145
|
+
"affected": [
|
|
146
|
+
"references/harness-facts.md"
|
|
147
|
+
],
|
|
148
|
+
"checksum": "df82c4bbf3b5bffca926a244549222c1235154cfba973b9a0bb1d7a0abd28d66",
|
|
149
|
+
"retrievedAt": "2026-08-27T08:19:24.132Z"
|
|
150
|
+
}
|
|
151
|
+
]
|
|
152
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dev-ship
|
|
3
|
+
description: Create the pull request and merge for a finished issue, each only on the user's explicit word. Use when the user says "make the PR", "open a pull request" for an issue, "ship it", "merge it", "merge issue 12", or asks to close out a reviewed issue. Verifies the issue is at for-you with evidence, links the PR to the issue, and squash-merges on the separate merge instruction. Not for implementing issues (dev-implement) or writing and approving them (dev-intake).
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# dev-ship
|
|
7
|
+
|
|
8
|
+
Two gates, each one sentence from the user, each spent when used: their words asking for a PR authorize the PR and nothing more; their words asking to merge authorize the merge. With `gates: 2` in `.vegastack/dev.md`, one "ship it" covers both — that's the only case where they combine. Passing checks, PR permissions, and the calendar authorize nothing by themselves.
|
|
9
|
+
|
|
10
|
+
Nearest neighbor: `dev-implement` produces the `for-you` issue with its evidence comment; ship packages and lands it. Corrections found here go back through implement's corrections loop.
|
|
11
|
+
|
|
12
|
+
## Gate 1 — the PR
|
|
13
|
+
|
|
14
|
+
On the user's PR instruction:
|
|
15
|
+
|
|
16
|
+
- Verify the issue is at `for-you` with the evidence comment present, and the branch is pushed. Not there yet → say what's missing instead of creating a premature PR.
|
|
17
|
+
- `gh pr create` from the task branch: title from the issue, body is `Closes #<n>` plus a link to the evidence comment — the issue holds the report; the PR links it rather than duplicating it.
|
|
18
|
+
- No draft PRs unless the user asks for one.
|
|
19
|
+
- If required checks fail on the PR, that's implement work: hand the failures to the corrections loop, update the evidence comment, and tell the user.
|
|
20
|
+
- User corrections left on the PR itself flow through the same corrections loop on the same branch — the PR updates with the push; nothing gets recreated.
|
|
21
|
+
|
|
22
|
+
## Gate 2 — the merge
|
|
23
|
+
|
|
24
|
+
On the user's separate merge instruction:
|
|
25
|
+
|
|
26
|
+
- Re-check that the PR head is still the revision the evidence comment names and checks are green — a branch that moved since review gets re-verified before it lands.
|
|
27
|
+
- A merge conflict with the default branch is corrections work: update the branch, re-verify what the update touched, and the standing merge instruction holds once checks are green again — unless the update changed behavior, which goes back to the user.
|
|
28
|
+
- Merge per the dev.md `merge` knob (default `gh pr merge --squash`). `Closes #<n>` closes the issue; confirm both happened.
|
|
29
|
+
- If the issue carries a `Decision:` comment (the dev-intake convention), append its one dated line to the register dev.md names (`decisions:` knob) now — the register is append-only and this is its moment.
|
|
30
|
+
|
|
31
|
+
## Report
|
|
32
|
+
|
|
33
|
+
One short confirmation each gate: what was created or merged, the link, and anything that still needs the user (failing check, moved head, missing evidence). When a gate's condition isn't met, the answer is what's missing — the gate itself never gets skipped to be helpful.
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
# Refresh contract — dev-ship
|
|
2
|
+
|
|
3
|
+
Evergreen: this skill asserts no version pins, vendor mechanism names beyond long-stable `gh` subcommands, numeric vendor limits, or dated facts — its content is the two-gate discipline, all versionless. Revisit if a future edit introduces a volatile fact.
|
|
@@ -9,7 +9,7 @@ Maintenance skill for this repository. Every change under `skills/` must satisfy
|
|
|
9
9
|
|
|
10
10
|
## Operating rules
|
|
11
11
|
|
|
12
|
-
1. Skill content lives only in `skills/<name>/`. Wiring lives outside it: the packaging allowlist in `packages/cli/
|
|
12
|
+
1. Skill content lives only in `skills/<name>/`. Wiring lives outside it: the per-skill packaging allowlist in `packages/cli/packaging.json`, the root `README.md` skills table, and `CHANGELOG.md` (via changesets). The skillify scaffolder writes all three when creating a skill.
|
|
13
13
|
2. Frontmatter is exactly two keys: `name` and `description`. The open spec also allows `license`, `compatibility`, and `metadata`, but this repo defaults to the minimal two; adding any other key is a policy exception needing maintainer sign-off.
|
|
14
14
|
3. `name` must equal the directory name. Grammar: starts with a lowercase letter, then only lowercase letters, digits, and hyphens; no leading/trailing hyphen, no consecutive hyphens; at most 64 chars.
|
|
15
15
|
4. `description`: at most 1024 chars, third person, states WHAT the skill does and WHEN to load it, trigger words front-loaded, no angle brackets. Never summarize the workflow in it — agents follow the summary and skip the body. Err slightly pushy: agents under-trigger.
|
|
@@ -23,29 +23,28 @@ Maintenance skill for this repository. Every change under `skills/` must satisfy
|
|
|
23
23
|
| Need | Read |
|
|
24
24
|
|---|---|
|
|
25
25
|
| tri-harness standards: discovery paths, frontmatter rules, context budgets, install surfaces, portability rules, unverified items | [standards](references/standards.md) |
|
|
26
|
+
| new skill: should-it-exist gate, scaffolding, the 8-item contract audit, behavioral evals | the `skillify` skill |
|
|
26
27
|
| release, rename, deprecate, rollback mechanics | [release ops](references/release-ops.md) |
|
|
27
28
|
| this skill's own freshness contract | [REFRESH](refresh/REFRESH.md), [sources](refresh/sources.json) |
|
|
28
29
|
| authoritative repo policy | `CONTRIBUTING.md`, `docs/policies/content-versioning.md`, `docs/policies/release-and-rollback.md` at the repo root |
|
|
29
30
|
|
|
30
31
|
## Workflow: scaffold a new skill
|
|
31
32
|
|
|
32
|
-
1.
|
|
33
|
-
2. Write frontmatter and body per operating rules 2–6; the body routes to references, it does not inline them.
|
|
34
|
-
3.
|
|
35
|
-
4.
|
|
36
|
-
5. Seed refresh baselines with the deterministic runner, never by hand — invocation in [REFRESH](refresh/REFRESH.md).
|
|
37
|
-
6. Run the checks in operating rule 8.
|
|
33
|
+
1. Run skillify's `scripts/scaffold-skill.mjs` — it creates the contract tree (`SKILL.md`, `README.md`, `refresh/`, `agents/openai.yaml`, tests and the trigger fixture) and performs the repo wiring itself: the `packages/cli/packaging.json` entry, the root README row, and the changeset (a new skill is MINOR). Fill in the README row description and changeset text it leaves as TODOs; files added after scaffolding go into the skill's `packaging.json` entry by hand (the build fails loudly on unlisted files).
|
|
34
|
+
2. Write frontmatter and body per operating rules 2–6; the body routes to references, it does not inline them. `skillify` owns the full authoring and eval discipline.
|
|
35
|
+
3. Seed refresh baselines with the deterministic runner, never by hand — invocation in [REFRESH](refresh/REFRESH.md).
|
|
36
|
+
4. Run the checks in operating rule 8.
|
|
38
37
|
|
|
39
38
|
## Workflow: update or maintain
|
|
40
39
|
|
|
41
|
-
- **
|
|
40
|
+
- **Content versioning.** New rules/references and new recorded decisions are MINOR; weakening a normative rule, removing or renaming a skill, or breaking a per-project profile format is MAJOR; factual refreshes (pins, URLs, checksums) are PATCH (`docs/policies/content-versioning.md`).
|
|
42
41
|
- **Tag volatile claims.** Any sentence carrying a vendor version, mechanism name, or numeric budget gets a source marker comment mapping to an ID in that skill's `refresh/sources.json`, and the registry entry's `affected` list must name the reference it lives in. Untagged volatile facts rot silently.
|
|
43
42
|
- **Description budgets.** Stay within 1024 chars and keep triggers in the first sentence: Codex truncates its skill list at 2% of the context window / 8,000 chars, Claude Code truncates a skill's always-loaded listing at 1,536 chars — the tail of a long description is the first thing lost.
|
|
44
|
-
- **Packaged-file changes.** Any add/remove/rename of a packaged file must update
|
|
43
|
+
- **Packaged-file changes.** Any add/remove/rename of a packaged file must update that skill's `packages/cli/packaging.json` entry in the same PR.
|
|
45
44
|
|
|
46
45
|
## Workflow: rename, deprecate, or remove
|
|
47
46
|
|
|
48
|
-
Full playbook in [release ops](references/release-ops.md). Short form: a rename changes the directory and the frontmatter `name` in the same commit (they must stay equal), updates
|
|
47
|
+
Full playbook in [release ops](references/release-ops.md). Short form: a rename changes the directory and the frontmatter `name` in the same commit (they must stay equal), updates the packaging.json entry + root README table + CHANGELOG, and is MAJOR. Deprecation is announced in README/CHANGELOG before removal. Removal deletes the tree, unwires it, and is MAJOR.
|
|
49
48
|
|
|
50
49
|
## Workflow: release
|
|
51
50
|
|
|
@@ -4,26 +4,22 @@ Condensed operational playbook. The authoritative policies live at the repo root
|
|
|
4
4
|
|
|
5
5
|
## Semver for skill content
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Content is advisory prose and decision tables — no rule IDs, no machine-extracted rule format.
|
|
8
8
|
|
|
9
9
|
| Bump | Content change |
|
|
10
10
|
|---|---|
|
|
11
|
-
| MAJOR | Removing or renaming a
|
|
12
|
-
| MINOR | New
|
|
13
|
-
| PATCH | Factual refreshes: version pins, vendor mechanism names, URLs, registry checksums.
|
|
11
|
+
| MAJOR | Removing or renaming a skill. A breaking change to a per-project profile format (e.g. `.vegastack/arch.md`) that invalidates existing committed profiles. |
|
|
12
|
+
| MINOR | New reference file or reference section. New or changed recorded decision (e.g. a new "use/not/why" row, a new red line). New skill. |
|
|
13
|
+
| PATCH | Factual refreshes: pinned-fact updates, version pins, vendor mechanism names, URLs, registry checksums. Wording clarifications that don't change the recorded decision. Test/fixture-only changes. |
|
|
14
14
|
|
|
15
15
|
Installer/CLI changes follow ordinary semver on the same package version; a release takes the highest bump either side requires.
|
|
16
16
|
|
|
17
|
-
##
|
|
17
|
+
## One version identity
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
- Bumping the **package** (even MAJOR) must never invalidate a deployed profile — profiles bind to the foundation version.
|
|
25
|
-
- Bumping the **foundation** version is a content-contract event: it requires a compatibility entry describing how existing baselines are treated, and at minimum a MINOR package release.
|
|
26
|
-
- Each identity has one source of truth; never introduce additional copies of either number.
|
|
19
|
+
There is a single source of truth: the **package version** (`packages/cli/package.json`,
|
|
20
|
+
changesets-managed) — the npm release identity for the installer and every bundled skill's
|
|
21
|
+
content snapshot. No skill tracks a separate content-contract version, and no per-project
|
|
22
|
+
profile carries a schema version to validate against.
|
|
27
23
|
|
|
28
24
|
## Release flow (tag-driven)
|
|
29
25
|
|
|
@@ -44,10 +40,10 @@ Contributors do not bump versions in PRs; releases are maintainer-driven.
|
|
|
44
40
|
|
|
45
41
|
## Rename a skill
|
|
46
42
|
|
|
47
|
-
|
|
43
|
+
Skill names are consumer-facing identifiers — treat a rename as a stable-ID break:
|
|
48
44
|
|
|
49
45
|
1. Rename the directory and the frontmatter `name` in the same commit — they must always stay equal.
|
|
50
|
-
2. Update every wiring point in the same PR: the
|
|
46
|
+
2. Update every wiring point in the same PR: the skill's entry in `packages/cli/packaging.json`, the root README skills table row, and any cross-skill or docs links.
|
|
51
47
|
3. Changeset: MAJOR. Note the migration in `CHANGELOG.md`: copies installed under the old name are orphaned, and installer operations addressed to the old name stop resolving once the shipped manifest no longer knows it.
|
|
52
48
|
4. Registry source IDs inside `refresh/sources.json` are skill-internal and unaffected, but every `affected` ref must still resolve to a real reference in the renamed tree.
|
|
53
49
|
5. Re-run `node packages/cli/scripts/validate-skill.mjs skills/<new-name>` and the skill's tests — name/directory equality is validated.
|
|
@@ -60,4 +56,4 @@ Derived from the stable-ID logic in content-versioning (skill names are consumer
|
|
|
60
56
|
|
|
61
57
|
## Refresh branches
|
|
62
58
|
|
|
63
|
-
Branches named `refresh/**` are reserved for the automated freshness loop and are CI-restricted to `skills/*/refresh
|
|
59
|
+
Branches named `refresh/**` are reserved for the automated freshness loop and are CI-restricted to `skills/*/refresh/`. Human content changes go on normal branches. Never hand-edit checksums/versions/timestamps anywhere — CI re-fetches claimed baselines, so hand-edited values cannot merge.
|
|
@@ -5,18 +5,18 @@ Instructions for the scheduled refresh agent (and any human running a manual ref
|
|
|
5
5
|
## What this skill claims
|
|
6
6
|
|
|
7
7
|
- **Durable content** (`SKILL.md` workflows and operating rules, `references/release-ops.md`): repo process, derived from `docs/policies/*` — the refresh agent NEVER edits these. If a policy doc changes, that is a normal human PR, not a refresh.
|
|
8
|
-
- **
|
|
8
|
+
- **Volatile standards claims**: sentences marked `<!-- source: SOURCE-ID -->` inside `references/standards.md`. These carry the tri-harness standards — discovery paths, frontmatter rules, numeric context budgets, install surfaces. They are the compliance basis of every skill in this repo, so **all standards changes are semantic drift requiring a human-reviewed PR**: the agent may propose edits to marked sentences only, in the same PR as the registry update that evidences the change, and a maintainer must review before merge. The hard-limits table in `SKILL.md` mirrors several marked sentences; update it in the same PR (this is the one sanctioned SKILL.md touch, and only when a mirrored number changed).
|
|
9
9
|
- **Volatile layer** (the only file the agent edits freely): `refresh/sources.json` — the source registry and staleness snapshot (checksums, retrieval times).
|
|
10
10
|
|
|
11
11
|
## How to refresh
|
|
12
12
|
|
|
13
|
-
The deterministic runner is repo-shared
|
|
13
|
+
The deterministic runner is repo-shared, hosted at `tooling/refresh/`. Run from the repo root:
|
|
14
14
|
|
|
15
15
|
1. **Deterministic pass first** (no LLM judgment):
|
|
16
|
-
`node
|
|
16
|
+
`node tooling/refresh/refresh-evidence.mjs --registry skills/skill-maintainer/refresh/sources.json`
|
|
17
17
|
drift/stale/unavailable results are the work-list. Exit 1 with a critical entry means fail-closed: the run must not be silently skipped. All four sources here are critical.
|
|
18
18
|
2. **Accept verified changes** in the same code path:
|
|
19
|
-
`node
|
|
19
|
+
`node tooling/refresh/refresh-evidence.mjs --registry skills/skill-maintainer/refresh/sources.json --accept-baselines`
|
|
20
20
|
This writes registry, cache, and drift report together — never hand-edit checksums, versions, or timestamps; they must always come from a run. Baselines are runner-seeded; when a new source is added or a verified change is accepted, this accept-baselines invocation is the only sanctioned way to update them.
|
|
21
21
|
3. **Semantic verification** for every source the deterministic pass flagged: read the changed page (fetch the registry URL), decide whether any `<!-- source: X -->` marked sentence in `references/standards.md` (or the mirrored SKILL.md hard-limits row) is now wrong, and propose the minimal edit. Unlike version-pin registries, checksum drift here is presumed meaningful until a human reads the diff — these pages define the standards themselves. Editorial churn may be accepted silently only after that read.
|
|
22
22
|
4. **One standing refresh PR**, branch `refresh/weekly`, force-updated on every run (never stacked duplicates; the weekly workflow .github/workflows/refresh.yml maintains it). PR body lists: each changed source, old→new checksum, links to the evidence, and which marked sentences changed and why. A maintainer review is mandatory before merge.
|