create-agentic-repo 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +50 -0
  3. package/bin/create-agentic-repo.js +5 -0
  4. package/lib/cli.js +139 -0
  5. package/lib/fs-utils.js +119 -0
  6. package/lib/scaffold.js +69 -0
  7. package/package.json +33 -0
  8. package/templates/minimal/00_inbox/README.md +8 -0
  9. package/templates/minimal/01_harness/RULES.md +33 -0
  10. package/templates/minimal/01_harness/SKILLS_INDEX.md +7 -0
  11. package/templates/minimal/01_harness/STACK.md +8 -0
  12. package/templates/minimal/01_harness/TASKFLOW.md +51 -0
  13. package/templates/minimal/02_context/BRIEF.md +7 -0
  14. package/templates/minimal/02_context/CONSTRAINTS.md +9 -0
  15. package/templates/minimal/02_context/FACTS.md +10 -0
  16. package/templates/minimal/02_context/GLOSSARY.md +6 -0
  17. package/templates/minimal/02_context/LINKS.md +6 -0
  18. package/templates/minimal/03_specs/backlog.md +6 -0
  19. package/templates/minimal/03_specs/decisions.md +5 -0
  20. package/templates/minimal/03_specs/now/001_now.md +35 -0
  21. package/templates/minimal/04_outputs/.keep +0 -0
  22. package/templates/minimal/05_scratch/.keep +0 -0
  23. package/templates/minimal/README.md +10 -0
  24. package/templates/minimal/runners/antigravity.md +7 -0
  25. package/templates/minimal/runners/claude.md +7 -0
  26. package/templates/minimal/runners/codex.md +7 -0
  27. package/templates/minimal/shared/agents/distiller/AGENT.md +30 -0
  28. package/templates/minimal/shared/agents/maker/AGENT.md +30 -0
  29. package/templates/minimal/shared/agents/planner/AGENT.md +30 -0
  30. package/templates/minimal/shared/agents/reviewer/AGENT.md +30 -0
  31. package/templates/minimal/shared/skills/distill-context/SKILL.md +28 -0
  32. package/templates/minimal/shared/skills/qa-review/SKILL.md +24 -0
  33. package/templates/minimal/shared/skills/ship-output/SKILL.md +24 -0
  34. package/templates/minimal/shared/skills/skill-creator/LICENSE.txt +202 -0
  35. package/templates/minimal/shared/skills/skill-creator/SKILL.md +479 -0
  36. package/templates/minimal/shared/skills/skill-creator/agents/analyzer.md +274 -0
  37. package/templates/minimal/shared/skills/skill-creator/agents/comparator.md +202 -0
  38. package/templates/minimal/shared/skills/skill-creator/agents/grader.md +223 -0
  39. package/templates/minimal/shared/skills/skill-creator/assets/eval_review.html +146 -0
  40. package/templates/minimal/shared/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  41. package/templates/minimal/shared/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  42. package/templates/minimal/shared/skills/skill-creator/references/schemas.md +430 -0
  43. package/templates/minimal/shared/skills/skill-creator/scripts/__init__.py +0 -0
  44. package/templates/minimal/shared/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  45. package/templates/minimal/shared/skills/skill-creator/scripts/generate_report.py +326 -0
  46. package/templates/minimal/shared/skills/skill-creator/scripts/improve_description.py +248 -0
  47. package/templates/minimal/shared/skills/skill-creator/scripts/package_skill.py +136 -0
  48. package/templates/minimal/shared/skills/skill-creator/scripts/quick_validate.py +103 -0
  49. package/templates/minimal/shared/skills/skill-creator/scripts/run_eval.py +310 -0
  50. package/templates/minimal/shared/skills/skill-creator/scripts/run_loop.py +332 -0
  51. package/templates/minimal/shared/skills/skill-creator/scripts/utils.py +47 -0
  52. package/templates/minimal/shared/skills/write-spec/SKILL.md +26 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 create-agentic-repo contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,50 @@
1
+ # create-agentic-repo
2
+
3
+ Scaffold a context-lean **Agentic Repo Harness v2** workspace for Claude, Codex, and Antigravity.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm i -g create-agentic-repo
9
+ ```
10
+
11
+ Or run directly:
12
+
13
+ ```bash
14
+ npx create-agentic-repo my-project --template minimal --yes
15
+ ```
16
+
17
+ ## Usage
18
+
19
+ ```bash
20
+ create-agentic-repo <name> [options]
21
+ ```
22
+
23
+ ### Options
24
+
25
+ - `--template minimal` Template to use (only `minimal` for now).
26
+ - `--yes` Non-interactive mode. If `<name>` is omitted, defaults to `agentic-repo`.
27
+ - `--no-git` Skip `git init` in the generated project.
28
+ - `--dry-run` Show actions without writing files.
29
+ - `-h, --help` Show help.
30
+
31
+ ## What it generates
32
+
33
+ `minimal` creates a harness-first tree:
34
+
35
+ - `00_inbox/` rich raw context drop zone
36
+ - `01_harness/` always-on lean rules/taskflow
37
+ - `02_context/` distilled 5-minute context
38
+ - `03_specs/` one active spec + backlog/decisions
39
+ - `04_outputs/`, `05_scratch/`
40
+ - `shared/skills/` on-demand skills (includes vendored `skill-creator`)
41
+ - `shared/agents/` role agents (one folder per agent)
42
+ - `runners/` adapters for Claude/Codex/Antigravity
43
+
44
+ ## Development
45
+
46
+ ```bash
47
+ npm run smoke
48
+ ```
49
+
50
+ The smoke test scaffolds a temp project, verifies critical files, validates placeholder replacement, and checks `--dry-run` behavior.
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { main } = require('../lib/cli');
4
+
5
+ main();
package/lib/cli.js ADDED
@@ -0,0 +1,139 @@
1
+ const path = require('node:path');
2
+ const { scaffoldProject } = require('./scaffold');
3
+
4
+ function printHelp() {
5
+ console.log('create-agentic-repo');
6
+ console.log('');
7
+ console.log('Usage:');
8
+ console.log(' create-agentic-repo <name> [options]');
9
+ console.log('');
10
+ console.log('Options:');
11
+ console.log(' --template <name> Template to use (default: minimal)');
12
+ console.log(' --yes Non-interactive mode');
13
+ console.log(' --no-git Skip git init in generated project');
14
+ console.log(' --dry-run Show actions without creating files');
15
+ console.log(' -h, --help Show help');
16
+ }
17
+
18
+ function parseArgs(argv) {
19
+ let name;
20
+ let template = 'minimal';
21
+ let yes = false;
22
+ let noGit = false;
23
+ let dryRun = false;
24
+
25
+ for (let i = 0; i < argv.length; i += 1) {
26
+ const arg = argv[i];
27
+
28
+ if (arg === '-h' || arg === '--help') {
29
+ return { help: true };
30
+ }
31
+
32
+ if (arg === '--yes') {
33
+ yes = true;
34
+ continue;
35
+ }
36
+
37
+ if (arg === '--no-git') {
38
+ noGit = true;
39
+ continue;
40
+ }
41
+
42
+ if (arg === '--dry-run') {
43
+ dryRun = true;
44
+ continue;
45
+ }
46
+
47
+ if (arg === '--template') {
48
+ template = argv[i + 1];
49
+ i += 1;
50
+ continue;
51
+ }
52
+
53
+ if (arg.startsWith('--template=')) {
54
+ template = arg.slice('--template='.length);
55
+ continue;
56
+ }
57
+
58
+ if (arg.startsWith('-')) {
59
+ throw new Error(`Unknown option: ${arg}`);
60
+ }
61
+
62
+ if (!name) {
63
+ name = arg;
64
+ continue;
65
+ }
66
+
67
+ throw new Error(`Unexpected argument: ${arg}`);
68
+ }
69
+
70
+ if (!name && yes) {
71
+ name = 'agentic-repo';
72
+ }
73
+
74
+ if (!name) {
75
+ throw new Error('Project name is required (or pass --yes to use default name).');
76
+ }
77
+
78
+ if (template !== 'minimal') {
79
+ throw new Error(`Unsupported template: ${template}. Only "minimal" is available.`);
80
+ }
81
+
82
+ return {
83
+ dryRun,
84
+ help: false,
85
+ name,
86
+ noGit,
87
+ template,
88
+ yes,
89
+ };
90
+ }
91
+
92
+ function printNextSteps(projectName) {
93
+ console.log('');
94
+ console.log('Next steps:');
95
+ console.log(`1) cd ${projectName}`);
96
+ console.log('2) Drop your raw context into 00_inbox/');
97
+ console.log('3) Run Distill using 01_harness/TASKFLOW.md');
98
+ }
99
+
100
+ function main() {
101
+ try {
102
+ const parsed = parseArgs(process.argv.slice(2));
103
+ if (parsed.help) {
104
+ printHelp();
105
+ return;
106
+ }
107
+
108
+ const projectName = parsed.name;
109
+ const targetDir = path.resolve(process.cwd(), projectName);
110
+ const logger = (line) => console.log(line);
111
+
112
+ scaffoldProject({
113
+ dryRun: parsed.dryRun,
114
+ logger,
115
+ noGit: parsed.noGit,
116
+ projectName,
117
+ targetDir,
118
+ template: parsed.template,
119
+ });
120
+
121
+ if (parsed.dryRun) {
122
+ console.log('');
123
+ console.log('Dry run complete. No files were written.');
124
+ return;
125
+ }
126
+
127
+ console.log('');
128
+ console.log(`Created ${projectName}.`);
129
+ printNextSteps(projectName);
130
+ } catch (error) {
131
+ console.error(`Error: ${error.message}`);
132
+ process.exitCode = 1;
133
+ }
134
+ }
135
+
136
+ module.exports = {
137
+ main,
138
+ parseArgs,
139
+ };
@@ -0,0 +1,119 @@
1
+ const fs = require('node:fs');
2
+ const path = require('node:path');
3
+
4
+ function pathExists(targetPath) {
5
+ try {
6
+ fs.accessSync(targetPath);
7
+ return true;
8
+ } catch {
9
+ return false;
10
+ }
11
+ }
12
+
13
+ function isDirectoryEmpty(dirPath) {
14
+ return fs.readdirSync(dirPath).length === 0;
15
+ }
16
+
17
+ function copyDirectoryRecursive(srcDir, destDir, options) {
18
+ const { dryRun, logger } = options;
19
+
20
+ if (!dryRun) {
21
+ fs.mkdirSync(destDir, { recursive: true });
22
+ }
23
+ logger(`[copy] ${destDir}`);
24
+
25
+ const entries = fs.readdirSync(srcDir, { withFileTypes: true });
26
+ for (const entry of entries) {
27
+ const srcPath = path.join(srcDir, entry.name);
28
+ const destPath = path.join(destDir, entry.name);
29
+
30
+ if (entry.isDirectory()) {
31
+ copyDirectoryRecursive(srcPath, destPath, options);
32
+ continue;
33
+ }
34
+
35
+ if (entry.isFile()) {
36
+ logger(`[copy] ${destPath}`);
37
+ if (!dryRun) {
38
+ fs.copyFileSync(srcPath, destPath);
39
+ const srcMode = fs.statSync(srcPath).mode;
40
+ fs.chmodSync(destPath, srcMode);
41
+ }
42
+ }
43
+ }
44
+ }
45
+
46
+ function replacePlaceholdersInTextFiles(rootDir, replacements, options) {
47
+ const { dryRun, logger } = options;
48
+ const textExtensions = new Set(['.md', '.txt']);
49
+
50
+ function walk(currentDir) {
51
+ const entries = fs.readdirSync(currentDir, { withFileTypes: true });
52
+
53
+ for (const entry of entries) {
54
+ const filePath = path.join(currentDir, entry.name);
55
+ if (entry.isDirectory()) {
56
+ walk(filePath);
57
+ continue;
58
+ }
59
+
60
+ if (!entry.isFile()) {
61
+ continue;
62
+ }
63
+
64
+ const ext = path.extname(filePath).toLowerCase();
65
+ if (!textExtensions.has(ext)) {
66
+ continue;
67
+ }
68
+
69
+ const original = fs.readFileSync(filePath, 'utf8');
70
+ let next = original;
71
+
72
+ for (const [token, value] of Object.entries(replacements)) {
73
+ next = next.split(token).join(value);
74
+ }
75
+
76
+ if (next !== original) {
77
+ logger(`[replace] ${filePath}`);
78
+ if (!dryRun) {
79
+ fs.writeFileSync(filePath, next, 'utf8');
80
+ }
81
+ }
82
+ }
83
+ }
84
+
85
+ walk(rootDir);
86
+ }
87
+
88
+ function ensureKeepFilesForEmptyDirs(rootDir, options) {
89
+ const { dryRun, logger } = options;
90
+
91
+ function visit(currentDir) {
92
+ const entries = fs.readdirSync(currentDir, { withFileTypes: true });
93
+
94
+ for (const entry of entries) {
95
+ if (entry.isDirectory()) {
96
+ visit(path.join(currentDir, entry.name));
97
+ }
98
+ }
99
+
100
+ const remaining = fs.readdirSync(currentDir);
101
+ if (remaining.length === 0) {
102
+ const keepPath = path.join(currentDir, '.keep');
103
+ logger(`[keep] ${keepPath}`);
104
+ if (!dryRun) {
105
+ fs.writeFileSync(keepPath, '', 'utf8');
106
+ }
107
+ }
108
+ }
109
+
110
+ visit(rootDir);
111
+ }
112
+
113
+ module.exports = {
114
+ copyDirectoryRecursive,
115
+ ensureKeepFilesForEmptyDirs,
116
+ isDirectoryEmpty,
117
+ pathExists,
118
+ replacePlaceholdersInTextFiles,
119
+ };
@@ -0,0 +1,69 @@
1
+ const path = require('node:path');
2
+ const { spawnSync } = require('node:child_process');
3
+ const {
4
+ copyDirectoryRecursive,
5
+ ensureKeepFilesForEmptyDirs,
6
+ isDirectoryEmpty,
7
+ pathExists,
8
+ replacePlaceholdersInTextFiles,
9
+ } = require('./fs-utils');
10
+
11
+ function scaffoldProject(options) {
12
+ const {
13
+ projectName,
14
+ targetDir,
15
+ template,
16
+ dryRun,
17
+ noGit,
18
+ logger,
19
+ } = options;
20
+
21
+ const templateDir = path.resolve(__dirname, '..', 'templates', template);
22
+ if (!pathExists(templateDir)) {
23
+ throw new Error(`Unknown template: ${template}`);
24
+ }
25
+
26
+ if (pathExists(targetDir) && !isDirectoryEmpty(targetDir)) {
27
+ throw new Error(`Target directory already exists and is not empty: ${targetDir}`);
28
+ }
29
+
30
+ logger(`[info] template=${template}`);
31
+ logger(`[info] project=${projectName}`);
32
+ logger(`[info] target=${targetDir}`);
33
+
34
+ copyDirectoryRecursive(templateDir, targetDir, { dryRun, logger });
35
+
36
+ if (dryRun) {
37
+ logger('[dry-run] placeholder replacement skipped (no files written)');
38
+ logger('[dry-run] empty-dir .keep check skipped (no files written)');
39
+ } else {
40
+ replacePlaceholdersInTextFiles(
41
+ targetDir,
42
+ { '{{PROJECT_NAME}}': projectName },
43
+ { dryRun, logger }
44
+ );
45
+
46
+ ensureKeepFilesForEmptyDirs(targetDir, { dryRun, logger });
47
+ }
48
+
49
+ if (!noGit) {
50
+ if (dryRun) {
51
+ logger(`[git] would run: git init (${targetDir})`);
52
+ } else {
53
+ const result = spawnSync('git', ['init'], {
54
+ cwd: targetDir,
55
+ stdio: 'ignore',
56
+ });
57
+
58
+ if (result.status !== 0) {
59
+ logger('[warn] git init failed; continue manually if needed.');
60
+ } else {
61
+ logger('[git] initialized repository');
62
+ }
63
+ }
64
+ }
65
+ }
66
+
67
+ module.exports = {
68
+ scaffoldProject,
69
+ };
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "create-agentic-repo",
3
+ "version": "0.1.0",
4
+ "description": "Scaffold context-lean Agentic Repo Harness v2 workspaces.",
5
+ "license": "MIT",
6
+ "author": "",
7
+ "type": "commonjs",
8
+ "main": "lib/cli.js",
9
+ "bin": {
10
+ "create-agentic-repo": "bin/create-agentic-repo.js"
11
+ },
12
+ "files": [
13
+ "bin",
14
+ "lib",
15
+ "templates",
16
+ "README.md",
17
+ "LICENSE"
18
+ ],
19
+ "engines": {
20
+ "node": ">=18"
21
+ },
22
+ "scripts": {
23
+ "smoke": "node scripts/smoke-test.js",
24
+ "test": "npm run smoke"
25
+ },
26
+ "keywords": [
27
+ "agentic",
28
+ "scaffold",
29
+ "cli",
30
+ "harness",
31
+ "spec-driven"
32
+ ]
33
+ }
@@ -0,0 +1,8 @@
1
+ # 00_inbox
2
+
3
+ Drop-only zone for raw context.
4
+
5
+ Rules:
6
+ - Put everything here first: notes, old docs, emails, links, dumps.
7
+ - Do not clean, rewrite, or organize here.
8
+ - Distill later into `02_context/`.
@@ -0,0 +1,33 @@
1
+ # RULES
2
+
3
+ These rules are always-on.
4
+
5
+ ## Truth and unknowns
6
+ - Do not invent facts.
7
+ - If information is missing, mark it as `Unknown`.
8
+ - Ask focused questions only when needed to proceed.
9
+
10
+ ## Anti-bloat
11
+ - Do not copy `00_inbox` into working files.
12
+ - Keep `02_context` readable in 5 minutes.
13
+ - Move heavy guidance into `shared/skills/`.
14
+
15
+ ## Spec discipline
16
+ - Work from one active spec at a time in `03_specs/now/`.
17
+ - Update acceptance criteria before shipping.
18
+ - Keep backlog items in `03_specs/backlog.md` as one-line entries.
19
+
20
+ ## Output discipline
21
+ - Final deliverables must go to `04_outputs/`.
22
+ - Working debris goes to `05_scratch/`.
23
+ - Use predictable names for deliverables: `YYYY-MM-DD_topic_v1.md`.
24
+
25
+ ## QA gate before close
26
+ - Verify each acceptance criterion explicitly.
27
+ - List unresolved `Unknown` items.
28
+ - State risks and next step if not done.
29
+
30
+ ## Naming and format
31
+ - Use clear file names and short headings.
32
+ - Prefer concise bullets over long prose.
33
+ - Keep docs actionable and skimmable.
@@ -0,0 +1,7 @@
1
+ # SKILLS_INDEX
2
+
3
+ - `distill-context` (heavy/manual): distills raw inbox into compact context files.
4
+ - `write-spec` (light): creates one SDD-light spec from distilled context.
5
+ - `ship-output` (light): produces the final deliverable in `04_outputs/`.
6
+ - `qa-review` (light): validates output against acceptance checklist.
7
+ - `skill-creator` (strategic/heavy): creates and iterates skills with eval loop.
@@ -0,0 +1,8 @@
1
+ # STACK
2
+
3
+ Default: N/A (docs-first workspace).
4
+
5
+ If code is introduced later, track here:
6
+ - Runtime/framework:
7
+ - Project layout conventions:
8
+ - Build/test/dev commands:
@@ -0,0 +1,51 @@
1
+ # TASKFLOW
2
+
3
+ Use this loop every time:
4
+
5
+ 1. Seed
6
+ 2. Distill
7
+ 3. Spec
8
+ 4. Ship
9
+ 5. QA
10
+
11
+ Only one active spec at a time.
12
+
13
+ ## Distill prompt (copy/paste)
14
+
15
+ ```text
16
+ Read 00_inbox/ and distill only what is needed into:
17
+ - 02_context/BRIEF.md
18
+ - 02_context/FACTS.md
19
+ - 02_context/CONSTRAINTS.md
20
+ - 02_context/LINKS.md
21
+ - 02_context/GLOSSARY.md (if needed)
22
+
23
+ Rules:
24
+ - keep total context readable in 5 minutes
25
+ - separate facts from assumptions
26
+ - mark unknowns explicitly
27
+ - do not move raw dumps into 02_context
28
+ ```
29
+
30
+ ## Write spec prompt (copy/paste)
31
+
32
+ ```text
33
+ Using 02_context, create one active spec in 03_specs/now/001_now.md with:
34
+ - Outcome
35
+ - Scope / No-scope
36
+ - Inputs
37
+ - Deliverable path and format
38
+ - Acceptance criteria checklist
39
+ - Risks / edge cases
40
+ - Open questions (max 8)
41
+
42
+ Keep it execution-ready and concise.
43
+ ```
44
+
45
+ ## QA gate checklist
46
+
47
+ - [ ] Deliverable exists in `04_outputs/`
48
+ - [ ] Acceptance criteria all checked
49
+ - [ ] Unknowns listed
50
+ - [ ] Risks noted with mitigation
51
+ - [ ] Next action is clear
@@ -0,0 +1,7 @@
1
+ # BRIEF
2
+
3
+ - What this project is:
4
+ - Who it is for:
5
+ - Measurable outcome:
6
+ - Time horizon:
7
+ - Success definition:
@@ -0,0 +1,9 @@
1
+ # CONSTRAINTS
2
+
3
+ Track real constraints only.
4
+
5
+ - Budget:
6
+ - Time:
7
+ - Tooling limits:
8
+ - Non-negotiables:
9
+ - Tone/brand constraints:
@@ -0,0 +1,10 @@
1
+ # FACTS
2
+
3
+ List only verifiable facts.
4
+
5
+ Format:
6
+ - Fact:
7
+ Source:
8
+ Confidence: high|medium|low
9
+
10
+ If source is missing, mark `Unknown source`.
@@ -0,0 +1,6 @@
1
+ # GLOSSARY
2
+
3
+ Only include terms needed to avoid ambiguity.
4
+
5
+ - Term:
6
+ Definition:
@@ -0,0 +1,6 @@
1
+ # LINKS
2
+
3
+ Useful references with one-line relevance.
4
+
5
+ - URL:
6
+ Why it matters:
@@ -0,0 +1,6 @@
1
+ # BACKLOG
2
+
3
+ One line per item.
4
+
5
+ - [ ] Example: define ICP messaging draft
6
+ - [ ] Example: draft outreach sequence
@@ -0,0 +1,5 @@
1
+ # DECISIONS
2
+
3
+ Short decision log.
4
+
5
+ - 2026-03-01: Decision template initialized. Status: pending
@@ -0,0 +1,35 @@
1
+ # 001_now
2
+
3
+ ## Outcome
4
+ - What must exist at the end:
5
+
6
+ ## Scope
7
+ - In scope:
8
+ - Out of scope:
9
+
10
+ ## Inputs
11
+ - Files:
12
+ - Links:
13
+ - Data:
14
+
15
+ ## Deliverable
16
+ - Path: `04_outputs/YYYY-MM-DD_topic_v1.md`
17
+ - Format:
18
+
19
+ ## Acceptance Criteria
20
+ - [ ] Criterion 1
21
+ - [ ] Criterion 2
22
+ - [ ] Criterion 3
23
+ - [ ] Criterion 4
24
+ - [ ] Criterion 5
25
+ - [ ] Criterion 6
26
+ - [ ] Criterion 7
27
+ - [ ] Criterion 8
28
+
29
+ ## Risks and Edge Cases
30
+ - Risk:
31
+ - Edge case:
32
+
33
+ ## Open Questions
34
+ - Q1:
35
+ - Q2:
File without changes
File without changes
@@ -0,0 +1,10 @@
1
+ # {{PROJECT_NAME}}
2
+
3
+ Agentic Repo Harness v2 workspace.
4
+
5
+ ## Start Here
6
+
7
+ 1. Drop all raw material into `00_inbox/`.
8
+ 2. Use `01_harness/TASKFLOW.md` to run Seed -> Distill -> Spec -> Ship -> QA.
9
+ 3. Keep one active spec in `03_specs/now/`.
10
+ 4. Put deliverables in `04_outputs/`.
@@ -0,0 +1,7 @@
1
+ # Antigravity Runner
2
+
3
+ 1. Anchor workflow on `01_harness/` files.
4
+ 2. Delegate heavy tasks via relevant skill folders in `shared/skills/`.
5
+ 3. Keep context distilled in `02_context/` and work from one spec.
6
+ 4. Route deliverables to `04_outputs/`.
7
+ 5. Finish with QA gate verification.
@@ -0,0 +1,7 @@
1
+ # Claude Runner
2
+
3
+ 1. Read `01_harness/RULES.md` and `01_harness/TASKFLOW.md` first.
4
+ 2. Load only the needed skill from `shared/skills/`.
5
+ 3. Keep one active spec in `03_specs/now/`.
6
+ 4. Write final deliverables to `04_outputs/`.
7
+ 5. Run QA gate from `TASKFLOW.md` before closing.
@@ -0,0 +1,7 @@
1
+ # Codex Runner
2
+
3
+ 1. Start with `01_harness/RULES.md` and `TASKFLOW.md`.
4
+ 2. Use on-demand skills under `shared/skills/` for heavy workflows.
5
+ 3. Execute from one active spec only.
6
+ 4. Store final artifacts in `04_outputs/`.
7
+ 5. Complete QA checklist before marking done.