@yarkingulacti/agentic-scaffold 0.7.0 → 0.7.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 +56 -26
- package/bin/index.js +107 -86
- package/package.json +1 -1
- package/src/scaffold.js +48 -17
- package/src/unscaffold.js +84 -0
- package/templates/docs/CODING_PRINCIPLES.md +1 -1
- package/templates/docs/agents/domain.md.hbs +21 -18
- package/templates/docs/agents/issue-tracker.md.hbs +4 -4
- package/templates/docs/agents/session-close.md.hbs +5 -5
- package/templates/docs/context/INDEX.md +1 -1
- package/templates/hooks/post-bugfix.md.hbs +3 -3
- package/templates/hooks/post-feature.md.hbs +4 -4
- package/templates/hooks/post-session.md.hbs +6 -6
- package/templates/hooks/pre-feature.md.hbs +3 -3
- package/templates/root/AGENTS.md.hbs +21 -21
- package/templates/root/BUSINESS_LOGIC.md.hbs +2 -2
- package/templates/root/CLAUDE.md.hbs +21 -21
- package/templates/scripts/memory_common.py.hbs +5 -5
- package/templates/skills/bugfix/SKILL.md +2 -2
- package/templates/skills/create-hook/SKILL.md +8 -8
- package/templates/skills/diagnose/SKILL.md +1 -1
- package/templates/skills/fill-docs/SKILL.md +8 -8
- package/templates/skills/implement/SKILL.md +6 -6
- package/templates/skills/issue/SKILL.md +2 -2
- package/templates/skills/monthly/SKILL.md +1 -1
- package/templates/skills/next/SKILL.md +28 -0
- package/templates/skills/status/SKILL.md +2 -2
- package/templates/skills/summary/SKILL.md +2 -2
- package/templates/skills/today/SKILL.md +4 -4
- package/templates/skills/weekly/SKILL.md +2 -2
package/README.md
CHANGED
|
@@ -64,34 +64,44 @@ npx @yarkingulacti/agentic-scaffold --skip-skills --skip-scripts --skip-hooks
|
|
|
64
64
|
|
|
65
65
|
# Pre-configure values
|
|
66
66
|
npx @yarkingulacti/agentic-scaffold --project-name "my-app" --issue-tracker github
|
|
67
|
+
|
|
68
|
+
# Remove all scaffolded files (asks for confirmation)
|
|
69
|
+
npx @yarkingulacti/agentic-scaffold un
|
|
70
|
+
|
|
71
|
+
# Remove without confirmation
|
|
72
|
+
npx @yarkingulacti/agentic-scaffold un --force
|
|
67
73
|
```
|
|
68
74
|
|
|
69
75
|
## What you get
|
|
70
76
|
|
|
71
77
|
```
|
|
72
78
|
project/
|
|
73
|
-
├── AGENTS.md
|
|
74
|
-
├── CLAUDE.md
|
|
75
|
-
|
|
76
|
-
├── .
|
|
77
|
-
├──
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
│
|
|
82
|
-
│
|
|
83
|
-
│
|
|
84
|
-
│ │
|
|
85
|
-
│ ├──
|
|
86
|
-
│ │ ├──
|
|
87
|
-
│ │ └──
|
|
88
|
-
│ ├──
|
|
89
|
-
│
|
|
90
|
-
|
|
91
|
-
├── .
|
|
92
|
-
|
|
93
|
-
├── .
|
|
94
|
-
|
|
79
|
+
├── AGENTS.md -> .agentic-scaffold/AGENTS.md # Symlink entry point
|
|
80
|
+
├── CLAUDE.md -> .agentic-scaffold/CLAUDE.md # Symlink entry point
|
|
81
|
+
└── .agentic-scaffold/ # Single wrapper directory
|
|
82
|
+
├── AGENTS.md # Agent config (entry point for AI agents)
|
|
83
|
+
├── CLAUDE.md # Mirror of AGENTS.md
|
|
84
|
+
├── BUSINESS_LOGIC.md # Shell — fill with your domain
|
|
85
|
+
├── .gitignore
|
|
86
|
+
├── docs/
|
|
87
|
+
│ ├── CODING_PRINCIPLES.md # Operating rules for code
|
|
88
|
+
│ ├── adr/TEMPLATE.md # Architecture Decision Record template
|
|
89
|
+
│ ├── agents/
|
|
90
|
+
│ │ ├── domain.md # How to consume domain docs
|
|
91
|
+
│ │ ├── session-close.md # Post-coding session workflow
|
|
92
|
+
│ │ ├── issue-tracker.md # Issue tracker conventions
|
|
93
|
+
│ │ └── triage-labels.md # Triage status vocabulary
|
|
94
|
+
│ ├── context/
|
|
95
|
+
│ │ ├── INDEX.md # Section index for CONTEXT.md
|
|
96
|
+
│ │ └── glossary.md # Ubiquitous language glossary
|
|
97
|
+
│ ├── engineering/README.md
|
|
98
|
+
│ └── product/README.md
|
|
99
|
+
├── .agents/
|
|
100
|
+
│ ├── skills/ # Agent skill definitions (22 skills)
|
|
101
|
+
│ └── hooks/ # Pre/post lifecycle hooks
|
|
102
|
+
├── scripts/ # Markdown memory indexing pipeline
|
|
103
|
+
├── .scratchpad/ # Local detailed planning
|
|
104
|
+
└── .history/ # Shipped work summaries
|
|
95
105
|
```
|
|
96
106
|
|
|
97
107
|
## Auto-detection
|
|
@@ -126,6 +136,12 @@ CLI flags.
|
|
|
126
136
|
- **`--skip-hooks` flag** — skip the hooks component group.
|
|
127
137
|
- **98 tests** — detection, scaffolding, CLI, and hooks tested end-to-end.
|
|
128
138
|
|
|
139
|
+
## New in v0.6
|
|
140
|
+
|
|
141
|
+
- **Interactive mode redesign** — shows detected project profile before prompts, pre-fills prompts with detected values, and per-file conflict resolver that asks before overwriting existing files.
|
|
142
|
+
- **MEMORY.md golden rules** — feature branches mandatory for new features, every release gets a version tag.
|
|
143
|
+
- **Per-file conflict resolution** — `askOverwrite()` prompt lets you decide for each existing file during scaffolding.
|
|
144
|
+
|
|
129
145
|
## New in v0.5
|
|
130
146
|
|
|
131
147
|
- **`fill-docs` skill** — new agent skill that interviews you to complete placeholder content in BUSINESS_LOGIC.md, glossary, and other scaffolded docs.
|
|
@@ -154,12 +170,26 @@ CLI flags.
|
|
|
154
170
|
|
|
155
171
|
## After scaffolding
|
|
156
172
|
|
|
157
|
-
1. Fill in
|
|
173
|
+
1. Fill in `.agentic-scaffold/BUSINESS_LOGIC.md` with your product domain.
|
|
158
174
|
2. Run `npm install` / `pnpm install` for your project's actual dependencies.
|
|
159
175
|
3. `python3 -m venv .venv && pip install sqlite-vec` if you want vector memory.
|
|
160
|
-
4. Install the skills in your AI tool (e.g. opencode) — each `.agents/skills/*/SKILL.md` is self-contained.
|
|
161
|
-
5. Customize
|
|
162
|
-
6. Use the `fill-docs` skill (`.agents/skills/fill-docs/SKILL.md`) to complete scaffolded documentation.
|
|
176
|
+
4. Install the skills in your AI tool (e.g. opencode) — each `.agentic-scaffold/.agents/skills/*/SKILL.md` is self-contained.
|
|
177
|
+
5. Customize `.agentic-scaffold/docs/agents/triage-labels.md` to match your tracker's vocabulary.
|
|
178
|
+
6. Use the `fill-docs` skill (`.agentic-scaffold/.agents/skills/fill-docs/SKILL.md`) to complete scaffolded documentation.
|
|
179
|
+
|
|
180
|
+
## Unscaffold
|
|
181
|
+
|
|
182
|
+
Remove all scaffolded files in one command:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
# Interactive (asks for confirmation)
|
|
186
|
+
npx @yarkingulacti/agentic-scaffold un
|
|
187
|
+
|
|
188
|
+
# Non-interactive
|
|
189
|
+
npx @yarkingulacti/agentic-scaffold un --force
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
This removes the entire `.agentic-scaffold/` directory and the root-level symlinks (AGENTS.md, CLAUDE.md). Your project files are left untouched.
|
|
163
193
|
|
|
164
194
|
## Open source
|
|
165
195
|
|
package/bin/index.js
CHANGED
|
@@ -2,92 +2,113 @@
|
|
|
2
2
|
import yargs from "yargs";
|
|
3
3
|
import { hideBin } from "yargs/helpers";
|
|
4
4
|
import { scaffold } from "../src/scaffold.js";
|
|
5
|
+
import { unscaffold } from "../src/unscaffold.js";
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
7
|
+
function scaffoldBuilder(y) {
|
|
8
|
+
return y
|
|
9
|
+
.epilogue(
|
|
10
|
+
"Tiers:\n" +
|
|
11
|
+
" Zero-config Run with no flags \u2014 auto-detect project, scaffold only\n" +
|
|
12
|
+
" what\u2019s missing. Never overwrites existing files.\n" +
|
|
13
|
+
" Flag mode Override auto-detection with --package-manager,\n" +
|
|
14
|
+
" --ci-provider, --ai-tools, etc. Add --force to overwrite.\n" +
|
|
15
|
+
" Interactive Run with -i / --interactive for step-by-step prompts."
|
|
16
|
+
)
|
|
17
|
+
.example("$0", "Zero-config: auto-detect and scaffold missing files")
|
|
18
|
+
.example("$0 --force", "Force overwrite existing files")
|
|
19
|
+
.example("$0 --ci-provider github", "Override auto-detected CI provider")
|
|
20
|
+
.example("$0 --ai-tools opencode,cursor", "Generate configs for specific AI tools")
|
|
21
|
+
.example("$0 -i", "Interactive mode with prompts")
|
|
22
|
+
.option("interactive", {
|
|
23
|
+
alias: "i",
|
|
24
|
+
type: "boolean",
|
|
25
|
+
description: "Run in interactive mode with prompts",
|
|
26
|
+
default: false,
|
|
27
|
+
})
|
|
28
|
+
.option("target", {
|
|
29
|
+
alias: "t",
|
|
30
|
+
type: "string",
|
|
31
|
+
description: "Target directory (default: current working directory)",
|
|
32
|
+
default: process.cwd(),
|
|
33
|
+
})
|
|
34
|
+
.option("only", {
|
|
35
|
+
type: "string",
|
|
36
|
+
description: "Comma-separated component groups to include: docs,scripts,skills,all",
|
|
37
|
+
default: "all",
|
|
38
|
+
})
|
|
39
|
+
.option("skip-skills", {
|
|
40
|
+
type: "boolean",
|
|
41
|
+
description: "Skip agent skill definitions",
|
|
42
|
+
})
|
|
43
|
+
.option("skip-hooks", {
|
|
44
|
+
type: "boolean",
|
|
45
|
+
description: "Skip agent lifecycle hook templates",
|
|
46
|
+
})
|
|
47
|
+
.option("skip-scripts", {
|
|
48
|
+
type: "boolean",
|
|
49
|
+
description: "Skip memory scripts",
|
|
50
|
+
default: false,
|
|
51
|
+
})
|
|
52
|
+
.option("skip-docs", {
|
|
53
|
+
type: "boolean",
|
|
54
|
+
description: "Skip docs folder",
|
|
55
|
+
default: false,
|
|
56
|
+
})
|
|
57
|
+
.option("project-name", {
|
|
58
|
+
type: "string",
|
|
59
|
+
description: "Project name (used in generated files)",
|
|
60
|
+
})
|
|
61
|
+
.option("issue-tracker", {
|
|
62
|
+
type: "string",
|
|
63
|
+
choices: ["linear", "github", "both"],
|
|
64
|
+
description: "Issue tracker type",
|
|
65
|
+
})
|
|
66
|
+
.option("force", {
|
|
67
|
+
alias: "f",
|
|
68
|
+
type: "boolean",
|
|
69
|
+
description: "Overwrite existing files",
|
|
70
|
+
default: false,
|
|
71
|
+
})
|
|
72
|
+
.option("package-manager", {
|
|
73
|
+
type: "string",
|
|
74
|
+
choices: ["npm", "yarn", "pnpm", "pip", "poetry", "go-mod", "cargo"],
|
|
75
|
+
description: "Package manager (overrides auto-detection)",
|
|
76
|
+
})
|
|
77
|
+
.option("ci-provider", {
|
|
78
|
+
type: "string",
|
|
79
|
+
choices: ["github", "gitlab", "circleci"],
|
|
80
|
+
description: "CI provider (overrides auto-detection)",
|
|
81
|
+
})
|
|
82
|
+
.option("ai-tools", {
|
|
83
|
+
type: "string",
|
|
84
|
+
description: "Comma-separated AI tools to configure: opencode,cursor,copilot",
|
|
85
|
+
})
|
|
86
|
+
.option("script-language", {
|
|
87
|
+
type: "string",
|
|
88
|
+
choices: ["python", "node", "docker"],
|
|
89
|
+
description: "Memory script language (overrides auto-detection)",
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function unBuilder(y) {
|
|
94
|
+
return y
|
|
95
|
+
.option("target", {
|
|
96
|
+
alias: "t",
|
|
97
|
+
type: "string",
|
|
98
|
+
description: "Target directory (default: current working directory)",
|
|
99
|
+
default: process.cwd(),
|
|
100
|
+
})
|
|
101
|
+
.option("force", {
|
|
102
|
+
alias: "f",
|
|
103
|
+
type: "boolean",
|
|
104
|
+
description: "Remove without confirmation",
|
|
105
|
+
default: false,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
yargs(hideBin(process.argv))
|
|
110
|
+
.command(["$0", "scaffold"], "Scaffold agentic configuration into a project", scaffoldBuilder, (argv) => scaffold(argv))
|
|
111
|
+
.command("un", "Remove scaffolded files from a project", unBuilder, (argv) => unscaffold(argv))
|
|
112
|
+
.demandCommand(1, "Use --help to see available commands")
|
|
90
113
|
.help()
|
|
91
114
|
.parse();
|
|
92
|
-
|
|
93
|
-
await scaffold(argv);
|
package/package.json
CHANGED
package/src/scaffold.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { readFileSync, writeFileSync, mkdirSync, existsSync } from "node:fs";
|
|
1
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync, symlinkSync } from "node:fs";
|
|
2
2
|
import { readdirSync, statSync, copyFileSync } from "node:fs";
|
|
3
3
|
import { join, dirname } from "node:path";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
@@ -23,6 +23,7 @@ function resolveConfig(argv) {
|
|
|
23
23
|
|
|
24
24
|
const config = {
|
|
25
25
|
target,
|
|
26
|
+
scaffoldDir: join(target, ".agentic-scaffold"),
|
|
26
27
|
projectName: argv.projectName ?? profile.projectName ?? (target.split("/").filter(Boolean).pop() ?? "project"),
|
|
27
28
|
projectDescription: argv.projectDescription ?? profile.projectDescription ?? DEFAULTS.projectDescription,
|
|
28
29
|
languages: profile.languages,
|
|
@@ -54,9 +55,9 @@ function resolveIncludes(argv) {
|
|
|
54
55
|
const ISSUE_TRACKER_DOCS = {
|
|
55
56
|
linear: {
|
|
56
57
|
name: "Linear",
|
|
57
|
-
description: "Short implementation records live in Linear. Local, detailed planning lives in `.scratchpad/<feature>/`. See
|
|
58
|
+
description: "Short implementation records live in Linear. Local, detailed planning lives in `.agentic-scaffold/.scratchpad/<feature>/`. See `.agentic-scaffold/docs/agents/issue-tracker.md`.",
|
|
58
59
|
trackerDoc: "Linear",
|
|
59
|
-
short: "Short issue records live in Linear. Local detailed planning lives in `.scratchpad/`.",
|
|
60
|
+
short: "Short issue records live in Linear. Local detailed planning lives in `.agentic-scaffold/.scratchpad/`.",
|
|
60
61
|
statusTable: `| Label | Status string | Meaning |
|
|
61
62
|
|-------|--------------|---------|
|
|
62
63
|
| needs-triage | \`needs-triage\` | Maintainer needs to evaluate this issue |
|
|
@@ -70,7 +71,7 @@ LINEAR_PROJECT_ID=`,
|
|
|
70
71
|
},
|
|
71
72
|
github: {
|
|
72
73
|
name: "GitHub Issues",
|
|
73
|
-
description: "Short implementation records live in GitHub Issues. Local, detailed planning lives in `.scratchpad/<feature>/`. See
|
|
74
|
+
description: "Short implementation records live in GitHub Issues. Local, detailed planning lives in `.agentic-scaffold/.scratchpad/<feature>/`. See `.agentic-scaffold/docs/agents/issue-tracker.md`.",
|
|
74
75
|
trackerDoc: "GitHub Issues",
|
|
75
76
|
short: "Short issue records live in GitHub Issues. Local detailed planning lives in `.scratchpad/`.",
|
|
76
77
|
statusTable: `| Label | Meaning |
|
|
@@ -87,13 +88,13 @@ LINEAR_PROJECT_ID=`,
|
|
|
87
88
|
|
|
88
89
|
function buildIncompleteFiles(config) {
|
|
89
90
|
const files = [
|
|
90
|
-
{ file: "BUSINESS_LOGIC.md", sections: "Core Domain Concepts, Non-Negotiable Rules, Architecture Decisions" },
|
|
91
|
+
{ file: ".agentic-scaffold/BUSINESS_LOGIC.md", sections: "Core Domain Concepts, Non-Negotiable Rules, Architecture Decisions" },
|
|
91
92
|
];
|
|
92
93
|
if (config.include.has("docs")) {
|
|
93
94
|
files.push(
|
|
94
|
-
{ file: "docs/context/glossary.md", sections: "domain term definitions" },
|
|
95
|
-
{ file: "docs/product/README.md", sections: "product spec descriptions" },
|
|
96
|
-
{ file: "docs/engineering/README.md", sections: "implementation conventions" },
|
|
95
|
+
{ file: ".agentic-scaffold/docs/context/glossary.md", sections: "domain term definitions" },
|
|
96
|
+
{ file: ".agentic-scaffold/docs/product/README.md", sections: "product spec descriptions" },
|
|
97
|
+
{ file: ".agentic-scaffold/docs/engineering/README.md", sections: "implementation conventions" },
|
|
97
98
|
);
|
|
98
99
|
}
|
|
99
100
|
return files;
|
|
@@ -117,7 +118,7 @@ function buildHandlebars(config) {
|
|
|
117
118
|
return {
|
|
118
119
|
projectName: config.projectName,
|
|
119
120
|
projectDescription: config.projectDescription,
|
|
120
|
-
scriptsDir: "scripts",
|
|
121
|
+
scriptsDir: ".agentic-scaffold/scripts",
|
|
121
122
|
issueTrackerName: tracker.name,
|
|
122
123
|
issueTrackerDescription: tracker.description,
|
|
123
124
|
issueTrackerShort: tracker.short,
|
|
@@ -216,48 +217,76 @@ async function renderDir(srcDir, destDir, data, options = {}) {
|
|
|
216
217
|
return results;
|
|
217
218
|
}
|
|
218
219
|
|
|
220
|
+
const SCAFFOLD_DIR_NAME = ".agentic-scaffold";
|
|
221
|
+
|
|
222
|
+
function scaffoldDir(config) {
|
|
223
|
+
return config.scaffoldDir;
|
|
224
|
+
}
|
|
225
|
+
|
|
219
226
|
async function scaffoldRoot(config, hbData, extraOpts = {}) {
|
|
220
227
|
const rootSrc = join(TEMPLATES_DIR, "root");
|
|
221
|
-
const rootDest = config
|
|
228
|
+
const rootDest = scaffoldDir(config);
|
|
222
229
|
return renderDir(rootSrc, rootDest, hbData, { force: config.force, interactive: config.interactive, ...extraOpts });
|
|
223
230
|
}
|
|
224
231
|
|
|
225
232
|
async function scaffoldDocs(config, hbData, extraOpts = {}) {
|
|
226
233
|
const docsSrc = join(TEMPLATES_DIR, "docs");
|
|
227
|
-
const docsDest = join(config
|
|
234
|
+
const docsDest = join(scaffoldDir(config), "docs");
|
|
228
235
|
return renderDir(docsSrc, docsDest, hbData, { force: config.force, interactive: config.interactive, ...extraOpts });
|
|
229
236
|
}
|
|
230
237
|
|
|
231
238
|
async function scaffoldScripts(config, hbData, extraOpts = {}) {
|
|
232
239
|
const scriptsSrc = join(TEMPLATES_DIR, "scripts");
|
|
233
|
-
const scriptsDest = join(config
|
|
240
|
+
const scriptsDest = join(scaffoldDir(config), "scripts");
|
|
234
241
|
return renderDir(scriptsSrc, scriptsDest, hbData, { force: config.force, interactive: config.interactive, ...extraOpts });
|
|
235
242
|
}
|
|
236
243
|
|
|
237
244
|
async function scaffoldSkills(config, extraOpts = {}) {
|
|
238
245
|
const skillsSrc = join(TEMPLATES_DIR, "skills");
|
|
239
|
-
const skillsDest = join(config
|
|
246
|
+
const skillsDest = join(scaffoldDir(config), ".agents", "skills");
|
|
240
247
|
return copyStaticDir(skillsSrc, skillsDest, { force: config.force, interactive: config.interactive, ...extraOpts });
|
|
241
248
|
}
|
|
242
249
|
|
|
243
250
|
async function scaffoldHooks(config, hbData, extraOpts = {}) {
|
|
244
251
|
const hooksSrc = join(TEMPLATES_DIR, "hooks");
|
|
245
|
-
const hooksDest = join(config
|
|
252
|
+
const hooksDest = join(scaffoldDir(config), ".agents", "hooks");
|
|
246
253
|
return renderDir(hooksSrc, hooksDest, hbData, { force: config.force, interactive: config.interactive, ...extraOpts });
|
|
247
254
|
}
|
|
248
255
|
|
|
249
256
|
async function scaffoldScratchpad(config, extraOpts = {}) {
|
|
250
257
|
const src = join(TEMPLATES_DIR, "scratchpad");
|
|
251
|
-
const dest = join(config
|
|
258
|
+
const dest = join(scaffoldDir(config), ".scratchpad");
|
|
252
259
|
return copyStaticDir(src, dest, { force: config.force, interactive: config.interactive, ...extraOpts });
|
|
253
260
|
}
|
|
254
261
|
|
|
255
262
|
async function scaffoldHistory(config, extraOpts = {}) {
|
|
256
263
|
const src = join(TEMPLATES_DIR, "history");
|
|
257
|
-
const dest = join(config
|
|
264
|
+
const dest = join(scaffoldDir(config), ".history");
|
|
258
265
|
return copyStaticDir(src, dest, { force: config.force, interactive: config.interactive, ...extraOpts });
|
|
259
266
|
}
|
|
260
267
|
|
|
268
|
+
function createSymlinks(config) {
|
|
269
|
+
const links = [
|
|
270
|
+
["AGENTS.md", ".agentic-scaffold/AGENTS.md"],
|
|
271
|
+
["CLAUDE.md", ".agentic-scaffold/CLAUDE.md"],
|
|
272
|
+
];
|
|
273
|
+
const created = [];
|
|
274
|
+
for (const [name, target] of links) {
|
|
275
|
+
const linkPath = join(config.target, name);
|
|
276
|
+
if (existsSync(linkPath)) {
|
|
277
|
+
created.push("skipped-existing");
|
|
278
|
+
continue;
|
|
279
|
+
}
|
|
280
|
+
try {
|
|
281
|
+
symlinkSync(target, linkPath);
|
|
282
|
+
created.push("written");
|
|
283
|
+
} catch {
|
|
284
|
+
created.push("skipped-existing");
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
return created;
|
|
288
|
+
}
|
|
289
|
+
|
|
261
290
|
function countTemplateFiles(config) {
|
|
262
291
|
const dirs = [
|
|
263
292
|
join(TEMPLATES_DIR, "root"),
|
|
@@ -324,6 +353,8 @@ export async function scaffold(argv) {
|
|
|
324
353
|
results.push(...(await scaffoldScratchpad(config, tickOpts)));
|
|
325
354
|
results.push(...(await scaffoldHistory(config, tickOpts)));
|
|
326
355
|
|
|
356
|
+
results.push(...(await createSymlinks(config)));
|
|
357
|
+
|
|
327
358
|
process.stdout.write("\r".padEnd(60) + "\r");
|
|
328
359
|
|
|
329
360
|
const written = results.filter((r) => r === "written").length;
|
|
@@ -345,7 +376,7 @@ export async function scaffold(argv) {
|
|
|
345
376
|
}
|
|
346
377
|
if (config.include.has("skills")) {
|
|
347
378
|
console.log(`\n ${style.dim("Agent skill available to help:")}`);
|
|
348
|
-
console.log(` .agents/skills/fill-docs/SKILL.md`);
|
|
379
|
+
console.log(` .agentic-scaffold/.agents/skills/fill-docs/SKILL.md`);
|
|
349
380
|
console.log(` ${style.dim("Invoke it with your AI agent to fill in these files conversationally.")}`);
|
|
350
381
|
}
|
|
351
382
|
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { existsSync, readdirSync, lstatSync, readlinkSync, rmSync } from "node:fs";
|
|
2
|
+
import { join, relative } from "node:path";
|
|
3
|
+
import readline from "node:readline/promises";
|
|
4
|
+
import { stdin as input, stdout as output } from "node:process";
|
|
5
|
+
import { infoBox, summaryLine, style } from "./ui.js";
|
|
6
|
+
|
|
7
|
+
const SCAFFOLD_DIR = ".agentic-scaffold";
|
|
8
|
+
|
|
9
|
+
function findScaffoldFiles(target) {
|
|
10
|
+
const scaffoldPath = join(target, SCAFFOLD_DIR);
|
|
11
|
+
if (!existsSync(scaffoldPath)) return null;
|
|
12
|
+
|
|
13
|
+
const files = [];
|
|
14
|
+
collectFiles(scaffoldPath, files);
|
|
15
|
+
return { scaffoldPath, files };
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function collectFiles(dir, files) {
|
|
19
|
+
for (const name of readdirSync(dir)) {
|
|
20
|
+
const full = join(dir, name);
|
|
21
|
+
const stat = lstatSync(full);
|
|
22
|
+
if (stat.isDirectory()) {
|
|
23
|
+
files.push({ path: full, type: "dir" });
|
|
24
|
+
collectFiles(full, files);
|
|
25
|
+
} else {
|
|
26
|
+
files.push({ path: full, type: "file" });
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function findSymlinks(target) {
|
|
32
|
+
const links = [];
|
|
33
|
+
for (const name of ["AGENTS.md", "CLAUDE.md"]) {
|
|
34
|
+
const full = join(target, name);
|
|
35
|
+
if (!existsSync(full)) continue;
|
|
36
|
+
const stat = lstatSync(full);
|
|
37
|
+
if (stat.isSymbolicLink()) {
|
|
38
|
+
const linkTarget = readlinkSync(full);
|
|
39
|
+
if (linkTarget.startsWith(SCAFFOLD_DIR)) {
|
|
40
|
+
links.push(full);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return links;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export async function unscaffold(argv) {
|
|
48
|
+
const target = argv.target || process.cwd();
|
|
49
|
+
const force = argv.force ?? false;
|
|
50
|
+
|
|
51
|
+
const scaffoldData = findScaffoldFiles(target);
|
|
52
|
+
if (!scaffoldData) {
|
|
53
|
+
console.log(` ${summaryLine("Nothing to unscaffold — .agentic-scaffold/ not found.", "done")}`);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const symlinks = findSymlinks(target);
|
|
58
|
+
const { scaffoldPath, files } = scaffoldData;
|
|
59
|
+
|
|
60
|
+
const rows = [
|
|
61
|
+
["Target", style.cyan(target)],
|
|
62
|
+
["Files to remove", style.cyan(String(files.length))],
|
|
63
|
+
["Symlinks to remove", style.cyan(String(symlinks.length))],
|
|
64
|
+
];
|
|
65
|
+
console.log(`\n${infoBox(rows)}`);
|
|
66
|
+
|
|
67
|
+
if (!force) {
|
|
68
|
+
const rl = readline.createInterface({ input, output });
|
|
69
|
+
const answer = await rl.question(` Remove .agentic-scaffold/ (${files.length} files, ${symlinks.length} symlinks)? [y/N]: `);
|
|
70
|
+
rl.close();
|
|
71
|
+
if (answer.trim().toLowerCase() !== "y") {
|
|
72
|
+
console.log(` ${summaryLine("Unscaffold cancelled.", "warn")}`);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
rmSync(scaffoldPath, { recursive: true, force: true });
|
|
78
|
+
|
|
79
|
+
for (const link of symlinks) {
|
|
80
|
+
rmSync(link, { force: true });
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
console.log(` ${summaryLine(`Removed ${files.length} files and ${symlinks.length} symlinks.`, "done")}`);
|
|
84
|
+
}
|
|
@@ -34,7 +34,7 @@ This is the short repo version for day-to-day implementation by human and AI age
|
|
|
34
34
|
|
|
35
35
|
- Is every new file needed for the current task?
|
|
36
36
|
- Is each new abstraction used by real code today?
|
|
37
|
-
- Does the code use project vocabulary from
|
|
37
|
+
- Does the code use project vocabulary from `.agentic-scaffold/BUSINESS_LOGIC.md` and `.agentic-scaffold/docs/context/glossary.md`?
|
|
38
38
|
- Are failures handled near the boundary where they become knowable?
|
|
39
39
|
- Do tests cover the behavior that could regress?
|
|
40
40
|
- Could a simpler function or module solve the same current requirement?
|
|
@@ -3,28 +3,28 @@
|
|
|
3
3
|
How the engineering skills should consume this repo's domain documentation when
|
|
4
4
|
exploring the codebase.
|
|
5
5
|
|
|
6
|
-
This repo uses
|
|
7
|
-
and
|
|
6
|
+
This repo uses `.agentic-scaffold/BUSINESS_LOGIC.md` as the primary project brain, with `.agentic-scaffold/docs/`
|
|
7
|
+
and `.agentic-scaffold/docs/adr/` as supporting tracked documentation.
|
|
8
8
|
|
|
9
|
-
Agents must read
|
|
10
|
-
issues. Future task plans must cite the relevant
|
|
9
|
+
Agents must read `.agentic-scaffold/BUSINESS_LOGIC.md` first before planning, coding, or creating
|
|
10
|
+
issues. Future task plans must cite the relevant `.agentic-scaffold/BUSINESS_LOGIC.md` section.
|
|
11
11
|
|
|
12
12
|
`CONTEXT.md` remains a **verbatim mirror** of the Obsidian vault, regenerated by
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
`.agentic-scaffold/scripts/sync-context.sh`. Never hand-edit it. Do not read it whole. Use
|
|
14
|
+
`.agentic-scaffold/docs/context/INDEX.md` to map your work area to relevant sections.
|
|
15
15
|
|
|
16
|
-
When `CONTEXT.md` conflicts with
|
|
17
|
-
|
|
16
|
+
When `CONTEXT.md` conflicts with `.agentic-scaffold/BUSINESS_LOGIC.md` or an accepted ADR, follow
|
|
17
|
+
`.agentic-scaffold/BUSINESS_LOGIC.md` and the accepted ADR. Treat `CONTEXT.md` as historical input
|
|
18
18
|
until the vault mirror is regenerated.
|
|
19
19
|
|
|
20
|
-
Glossary terms live in
|
|
20
|
+
Glossary terms live in `.agentic-scaffold/docs/context/glossary.md`.
|
|
21
21
|
|
|
22
22
|
## Before exploring, read these
|
|
23
23
|
|
|
24
|
-
-
|
|
25
|
-
-
|
|
24
|
+
- **`.agentic-scaffold/BUSINESS_LOGIC.md`** — product fundamentals and non-negotiable rules.
|
|
25
|
+
- **`.agentic-scaffold/docs/context/INDEX.md`** — pick relevant historical `CONTEXT.md` sections.
|
|
26
26
|
- **`CONTEXT.md`** — only the sections the index points you to.
|
|
27
|
-
-
|
|
27
|
+
- **`.agentic-scaffold/docs/adr/`** — read ADRs that touch the area you're about to work in.
|
|
28
28
|
|
|
29
29
|
If any of these files don't exist, **proceed silently**. Don't flag their
|
|
30
30
|
absence; don't suggest creating them upfront.
|
|
@@ -34,17 +34,20 @@ absence; don't suggest creating them upfront.
|
|
|
34
34
|
```
|
|
35
35
|
/
|
|
36
36
|
├── CONTEXT.md
|
|
37
|
-
├──
|
|
38
|
-
├──
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
├── AGENTS.md -> .agentic-scaffold/AGENTS.md
|
|
38
|
+
├── CLAUDE.md -> .agentic-scaffold/CLAUDE.md
|
|
39
|
+
└── .agentic-scaffold/
|
|
40
|
+
├── BUSINESS_LOGIC.md
|
|
41
|
+
├── docs/adr/
|
|
42
|
+
│ ├── 0001-example-decision.md
|
|
43
|
+
│ └── 0002-another-decision.md
|
|
44
|
+
└── ...
|
|
42
45
|
```
|
|
43
46
|
|
|
44
47
|
## Use the glossary's vocabulary
|
|
45
48
|
|
|
46
49
|
When your output names a domain concept, use the term as defined in
|
|
47
|
-
|
|
50
|
+
`.agentic-scaffold/docs/context/glossary.md`. Don't drift to synonyms the glossary explicitly
|
|
48
51
|
avoids.
|
|
49
52
|
|
|
50
53
|
If the concept you need isn't in the glossary yet, that's a signal — either
|
|
@@ -5,17 +5,17 @@
|
|
|
5
5
|
## Conventions
|
|
6
6
|
|
|
7
7
|
- Keep {{issueTrackerName}} titles and descriptions short.
|
|
8
|
-
- Put detailed implementation plans in `.scratchpad/<feature-slug>/`.
|
|
8
|
+
- Put detailed implementation plans in `.agentic-scaffold/.scratchpad/<feature-slug>/`.
|
|
9
9
|
- Link the {{issueTrackerName}} issue from the matching scratchpad file.
|
|
10
10
|
- Do not use issue comments as project memory.
|
|
11
|
-
- Shipped work summaries live in `.history/DD.MM.YYYY/README.md`.
|
|
11
|
+
- Shipped work summaries live in `.agentic-scaffold/.history/DD.MM.YYYY/README.md`.
|
|
12
12
|
|
|
13
13
|
## When a skill says "publish to the issue tracker"
|
|
14
14
|
|
|
15
15
|
Create or update the {{issueTrackerName}} issue, then create the matching local
|
|
16
|
-
detail file under `.scratchpad/<feature-slug>/`.
|
|
16
|
+
detail file under `.agentic-scaffold/.scratchpad/<feature-slug>/`.
|
|
17
17
|
|
|
18
18
|
## When a skill says "fetch the relevant ticket"
|
|
19
19
|
|
|
20
|
-
Read the {{issueTrackerName}} issue summary and the matching `.scratchpad/`
|
|
20
|
+
Read the {{issueTrackerName}} issue summary and the matching `.agentic-scaffold/.scratchpad/`
|
|
21
21
|
detail file when one exists.
|
|
@@ -5,18 +5,18 @@ handing off.
|
|
|
5
5
|
|
|
6
6
|
## Required Steps
|
|
7
7
|
|
|
8
|
-
If `.agents/hooks/post-session.md` exists, read and follow it instead of this
|
|
8
|
+
If `.agentic-scaffold/.agents/hooks/post-session.md` exists, read and follow it instead of this
|
|
9
9
|
file — it contains the canonical post-session workflow.
|
|
10
10
|
|
|
11
11
|
Otherwise, follow the steps below:
|
|
12
12
|
|
|
13
13
|
1. Run the relevant tests.
|
|
14
14
|
2. Build every touched project when a build command exists.
|
|
15
|
-
3. Create or update `.history/DD.MM.YYYY/README.md` with the master work title,
|
|
15
|
+
3. Create or update `.agentic-scaffold/.history/DD.MM.YYYY/README.md` with the master work title,
|
|
16
16
|
summary, changed files, verification, and remaining risk.
|
|
17
|
-
4. Re-index Markdown memory with
|
|
17
|
+
4. Re-index Markdown memory with `.agentic-scaffold/scripts/memory_index.py` so `.agentic-scaffold/.history/` is in
|
|
18
18
|
the SQLite vector database.
|
|
19
|
-
5. Update the related `.scratchpad/` status lines.
|
|
19
|
+
5. Update the related `.agentic-scaffold/.scratchpad/` status lines.
|
|
20
20
|
6. Create a Conventional Commit under the master work title.
|
|
21
21
|
7. Push a `feature/...`, `bugfix/...`, `docs/...`, or similar branch to the
|
|
22
22
|
remote.
|
|
@@ -46,5 +46,5 @@ Allowed common types: `feat`, `fix`, `docs`, `refactor`, `test`, `build`,
|
|
|
46
46
|
## Blockers
|
|
47
47
|
|
|
48
48
|
If a step cannot run because the repo has no command, no remote, invalid auth,
|
|
49
|
-
or missing external service, record that in `.history/` and the final response.
|
|
49
|
+
or missing external service, record that in `.agentic-scaffold/.history/` and the final response.
|
|
50
50
|
Do not pretend the step succeeded.
|
|
@@ -6,9 +6,9 @@ Fires after a bugfix is delivered.
|
|
|
6
6
|
|
|
7
7
|
1. Run the project's test suite to confirm the fix does not regress:
|
|
8
8
|
{{#if packageManager}} `{{packageManager}} test`{{else}} `npm test`{{/if}}
|
|
9
|
-
2. Run `.agents/hooks/scripts/post-bugfix.sh` if it exists.
|
|
10
|
-
3. Update `.history/DD.MM.YYYY/README.md` with a summary of the fix.
|
|
11
|
-
4. Update the related `.scratchpad/` status to mark completion.
|
|
9
|
+
2. Run `.agentic-scaffold/.agents/hooks/scripts/post-bugfix.sh` if it exists.
|
|
10
|
+
3. Update `.agentic-scaffold/.history/DD.MM.YYYY/README.md` with a summary of the fix.
|
|
11
|
+
4. Update the related `.agentic-scaffold/.scratchpad/` status to mark completion.
|
|
12
12
|
5. Create a Conventional Commit under the master work title.
|
|
13
13
|
|
|
14
14
|
## When to skip
|
|
@@ -6,10 +6,10 @@ Fires after a feature is delivered by any implementation skill.
|
|
|
6
6
|
|
|
7
7
|
1. Run the project's test suite:
|
|
8
8
|
{{#if packageManager}} `{{packageManager}} test`{{else}} `npm test`{{/if}}
|
|
9
|
-
2. Run `.agents/hooks/scripts/post-feature.sh` if it exists.
|
|
10
|
-
3. Update `.history/DD.MM.YYYY/README.md` with a summary of shipped work.
|
|
11
|
-
4. Run
|
|
12
|
-
5. Update the related `.scratchpad/` status to mark completion.
|
|
9
|
+
2. Run `.agentic-scaffold/.agents/hooks/scripts/post-feature.sh` if it exists.
|
|
10
|
+
3. Update `.agentic-scaffold/.history/DD.MM.YYYY/README.md` with a summary of shipped work.
|
|
11
|
+
4. Run `.agentic-scaffold/scripts/memory_index.py` to keep the vector index current.
|
|
12
|
+
5. Update the related `.agentic-scaffold/.scratchpad/` status to mark completion.
|
|
13
13
|
6. Create a Conventional Commit under the master work title.
|
|
14
14
|
|
|
15
15
|
## When to skip
|
|
@@ -5,13 +5,13 @@ Replaces the legacy session-close workflow.
|
|
|
5
5
|
|
|
6
6
|
## Steps
|
|
7
7
|
|
|
8
|
-
1. Run `.agents/hooks/scripts/post-session.sh` if it exists.
|
|
8
|
+
1. Run `.agentic-scaffold/.agents/hooks/scripts/post-session.sh` if it exists.
|
|
9
9
|
2. Run all applicable post-* hooks that match the work done:
|
|
10
|
-
- After feature work: `.agents/hooks/post-feature.md`
|
|
11
|
-
- After bugfix work: `.agents/hooks/post-bugfix.md`
|
|
10
|
+
- After feature work: `.agentic-scaffold/.agents/hooks/post-feature.md`
|
|
11
|
+
- After bugfix work: `.agentic-scaffold/.agents/hooks/post-bugfix.md`
|
|
12
12
|
3. Build every touched project when a build command exists.
|
|
13
|
-
4. Run
|
|
14
|
-
5. Update all affected `.scratchpad/` status lines.
|
|
13
|
+
4. Run `.agentic-scaffold/scripts/memory_index.py` so `.agentic-scaffold/.history/` is in the vector database.
|
|
14
|
+
5. Update all affected `.agentic-scaffold/.scratchpad/` status lines.
|
|
15
15
|
6. Push the feature/bugfix branch to the remote.
|
|
16
16
|
7. Create a PR, review it, merge it, then delete the PR branch.
|
|
17
17
|
|
|
@@ -30,5 +30,5 @@ Allowed types: `feat`, `fix`, `docs`, `refactor`, `test`, `build`, `ci`, `chore`
|
|
|
30
30
|
## Blockers
|
|
31
31
|
|
|
32
32
|
If a step cannot run because the repo has no command, no remote, invalid
|
|
33
|
-
auth, or missing external service, record that in `.history/` and the final
|
|
33
|
+
auth, or missing external service, record that in `.agentic-scaffold/.history/` and the final
|
|
34
34
|
response. Do not pretend the step succeeded.
|
|
@@ -6,10 +6,10 @@ initiates the work.
|
|
|
6
6
|
## Steps
|
|
7
7
|
|
|
8
8
|
1. Read `BUSINESS_LOGIC.md` and any relevant ADR.
|
|
9
|
-
2. Read the issue ticket and matching `.scratchpad/` detail file.
|
|
9
|
+
2. Read the issue ticket and matching `.agentic-scaffold/.scratchpad/` detail file.
|
|
10
10
|
3. If no scratchpad detail exists and the task is complex, create one.
|
|
11
|
-
4. Read
|
|
12
|
-
5. Run `.agents/hooks/scripts/pre-feature.sh` if it exists.
|
|
11
|
+
4. Read `.agentic-scaffold/docs/CODING_PRINCIPLES.md` to confirm approach.
|
|
12
|
+
5. Run `.agentic-scaffold/.agents/hooks/scripts/pre-feature.sh` if it exists.
|
|
13
13
|
|
|
14
14
|
## When to skip
|
|
15
15
|
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
### Project brain
|
|
6
6
|
|
|
7
|
-
Read
|
|
7
|
+
Read `.agentic-scaffold/BUSINESS_LOGIC.md` first for product fundamentals, core domain concepts,
|
|
8
8
|
non-negotiable rules, and decision references. Future task plans must cite the
|
|
9
|
-
relevant
|
|
9
|
+
relevant `.agentic-scaffold/BUSINESS_LOGIC.md` section before implementation.
|
|
10
10
|
|
|
11
11
|
`CONTEXT.md` remains a generated historical mirror from the Obsidian vault. Use
|
|
12
|
-
|
|
12
|
+
`.agentic-scaffold/docs/context/INDEX.md` to locate narrow sections when old context is needed;
|
|
13
13
|
do not read the whole file by default.
|
|
14
14
|
|
|
15
15
|
### Issue tracker
|
|
@@ -18,30 +18,30 @@ do not read the whole file by default.
|
|
|
18
18
|
|
|
19
19
|
### Work history
|
|
20
20
|
|
|
21
|
-
Shipped work is summarized in `.history/DD.MM.YYYY/README.md`. Use separated
|
|
21
|
+
Shipped work is summarized in `.agentic-scaffold/.history/DD.MM.YYYY/README.md`. Use separated
|
|
22
22
|
dated worklog files only; do not use issue comments as the project memory.
|
|
23
|
-
After every successful coding session, follow
|
|
23
|
+
After every successful coding session, follow `.agentic-scaffold/docs/agents/session-close.md`.
|
|
24
24
|
|
|
25
25
|
### Agent lifecycle hooks
|
|
26
26
|
|
|
27
|
-
Pre/post lifecycle hooks live in `.agents/hooks/`. Implementation skills
|
|
27
|
+
Pre/post lifecycle hooks live in `.agentic-scaffold/.agents/hooks/`. Implementation skills
|
|
28
28
|
reference them automatically. Available hooks:
|
|
29
29
|
|
|
30
|
-
- `.agents/hooks/pre-feature.md` — before implementing a feature
|
|
31
|
-
- `.agents/hooks/post-feature.md` — after implementing a feature
|
|
32
|
-
- `.agents/hooks/post-bugfix.md` — after fixing a bug
|
|
33
|
-
- `.agents/hooks/post-session.md` — after a coding session (canonical
|
|
34
|
-
post-session workflow, replaces
|
|
35
|
-
- `.agents/hooks/scripts/` — executable helpers for the hooks above
|
|
30
|
+
- `.agentic-scaffold/.agents/hooks/pre-feature.md` — before implementing a feature
|
|
31
|
+
- `.agentic-scaffold/.agents/hooks/post-feature.md` — after implementing a feature
|
|
32
|
+
- `.agentic-scaffold/.agents/hooks/post-bugfix.md` — after fixing a bug
|
|
33
|
+
- `.agentic-scaffold/.agents/hooks/post-session.md` — after a coding session (canonical
|
|
34
|
+
post-session workflow, replaces `.agentic-scaffold/docs/agents/session-close.md`)
|
|
35
|
+
- `.agentic-scaffold/.agents/hooks/scripts/` — executable helpers for the hooks above
|
|
36
36
|
|
|
37
37
|
### Domain docs
|
|
38
38
|
|
|
39
|
-
Use
|
|
40
|
-
See
|
|
39
|
+
Use `.agentic-scaffold/BUSINESS_LOGIC.md`, `.agentic-scaffold/docs/`, and `.agentic-scaffold/docs/adr/` as tracked source material.
|
|
40
|
+
See `.agentic-scaffold/docs/agents/domain.md`.
|
|
41
41
|
|
|
42
42
|
### Coding principles
|
|
43
43
|
|
|
44
|
-
Follow
|
|
44
|
+
Follow `.agentic-scaffold/docs/CODING_PRINCIPLES.md`: simple direct code, YAGNI, KISS, pragmatic
|
|
45
45
|
DRY, existing conventions, explicit boundaries, fail-fast validation, and
|
|
46
46
|
focused tests.
|
|
47
47
|
|
|
@@ -63,12 +63,12 @@ Memory and utility scripts use **{{scriptLanguage}}**.
|
|
|
63
63
|
|
|
64
64
|
### Agent memory
|
|
65
65
|
|
|
66
|
-
Use repo automation from
|
|
66
|
+
Use repo automation from `.agentic-scaffold/scripts/`:
|
|
67
67
|
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
68
|
+
- `.agentic-scaffold/scripts/memory_index.py` indexes project Markdown.
|
|
69
|
+
- `.agentic-scaffold/scripts/memory_search.py` searches indexed Markdown.
|
|
70
|
+
- `.agentic-scaffold/scripts/memory_bundle.py` writes a focused Markdown bundle for a task.
|
|
71
|
+
- `.agentic-scaffold/scripts/sync-context.sh` syncs the generated historical `CONTEXT.md`.
|
|
72
72
|
|
|
73
73
|
Generated memory files live under `.memory/` and are gitignored.
|
|
74
74
|
|
|
@@ -83,5 +83,5 @@ Some files contain placeholder content that must be completed:
|
|
|
83
83
|
{{/each}}
|
|
84
84
|
|
|
85
85
|
To complete these, invoke the `fill-docs` skill:
|
|
86
|
-
`.agents/skills/fill-docs/SKILL.md`
|
|
86
|
+
`.agentic-scaffold/.agents/skills/fill-docs/SKILL.md`
|
|
87
87
|
{{/if}}
|
|
@@ -30,6 +30,6 @@ Every future implementation plan must cite:
|
|
|
30
30
|
|
|
31
31
|
- the relevant `BUSINESS_LOGIC.md` section;
|
|
32
32
|
- any relevant ADR;
|
|
33
|
-
- any relevant
|
|
34
|
-
- the issue and matching `.scratchpad/` detail file when the work is
|
|
33
|
+
- any relevant `.agentic-scaffold/docs/` file;
|
|
34
|
+
- the issue and matching `.agentic-scaffold/.scratchpad/` detail file when the work is
|
|
35
35
|
issue-backed.
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
### Project brain
|
|
6
6
|
|
|
7
|
-
Read
|
|
7
|
+
Read `.agentic-scaffold/BUSINESS_LOGIC.md` first for product fundamentals, core domain concepts,
|
|
8
8
|
non-negotiable rules, and decision references. Future task plans must cite the
|
|
9
|
-
relevant
|
|
9
|
+
relevant `.agentic-scaffold/BUSINESS_LOGIC.md` section before implementation.
|
|
10
10
|
|
|
11
11
|
`CONTEXT.md` remains a generated historical mirror from the Obsidian vault. Use
|
|
12
|
-
|
|
12
|
+
`.agentic-scaffold/docs/context/INDEX.md` to locate narrow sections when old context is needed;
|
|
13
13
|
do not read the whole file by default.
|
|
14
14
|
|
|
15
15
|
### Issue tracker
|
|
@@ -18,41 +18,41 @@ do not read the whole file by default.
|
|
|
18
18
|
|
|
19
19
|
### Work history
|
|
20
20
|
|
|
21
|
-
Shipped work is summarized in `.history/DD.MM.YYYY/README.md`. Use separated
|
|
21
|
+
Shipped work is summarized in `.agentic-scaffold/.history/DD.MM.YYYY/README.md`. Use separated
|
|
22
22
|
dated worklog files only; do not use issue comments as the project memory.
|
|
23
|
-
After every successful coding session, follow
|
|
23
|
+
After every successful coding session, follow `.agentic-scaffold/docs/agents/session-close.md`.
|
|
24
24
|
|
|
25
25
|
### Agent lifecycle hooks
|
|
26
26
|
|
|
27
|
-
Pre/post lifecycle hooks live in `.agents/hooks/`. Implementation skills
|
|
27
|
+
Pre/post lifecycle hooks live in `.agentic-scaffold/.agents/hooks/`. Implementation skills
|
|
28
28
|
reference them automatically. Available hooks:
|
|
29
29
|
|
|
30
|
-
- `.agents/hooks/pre-feature.md` — before implementing a feature
|
|
31
|
-
- `.agents/hooks/post-feature.md` — after implementing a feature
|
|
32
|
-
- `.agents/hooks/post-bugfix.md` — after fixing a bug
|
|
33
|
-
- `.agents/hooks/post-session.md` — after a coding session (canonical
|
|
34
|
-
post-session workflow, replaces
|
|
35
|
-
- `.agents/hooks/scripts/` — executable helpers for the hooks above
|
|
30
|
+
- `.agentic-scaffold/.agents/hooks/pre-feature.md` — before implementing a feature
|
|
31
|
+
- `.agentic-scaffold/.agents/hooks/post-feature.md` — after implementing a feature
|
|
32
|
+
- `.agentic-scaffold/.agents/hooks/post-bugfix.md` — after fixing a bug
|
|
33
|
+
- `.agentic-scaffold/.agents/hooks/post-session.md` — after a coding session (canonical
|
|
34
|
+
post-session workflow, replaces `.agentic-scaffold/docs/agents/session-close.md`)
|
|
35
|
+
- `.agentic-scaffold/.agents/hooks/scripts/` — executable helpers for the hooks above
|
|
36
36
|
|
|
37
37
|
### Domain docs
|
|
38
38
|
|
|
39
|
-
Use
|
|
40
|
-
See
|
|
39
|
+
Use `.agentic-scaffold/BUSINESS_LOGIC.md`, `.agentic-scaffold/docs/`, and `.agentic-scaffold/docs/adr/` as tracked source material.
|
|
40
|
+
See `.agentic-scaffold/docs/agents/domain.md`.
|
|
41
41
|
|
|
42
42
|
### Coding principles
|
|
43
43
|
|
|
44
|
-
Follow
|
|
44
|
+
Follow `.agentic-scaffold/docs/CODING_PRINCIPLES.md`: simple direct code, YAGNI, KISS, pragmatic
|
|
45
45
|
DRY, existing conventions, explicit boundaries, fail-fast validation, and
|
|
46
46
|
focused tests.
|
|
47
47
|
|
|
48
48
|
### Agent memory
|
|
49
49
|
|
|
50
|
-
Use repo automation from
|
|
50
|
+
Use repo automation from `.agentic-scaffold/scripts/`:
|
|
51
51
|
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
52
|
+
- `.agentic-scaffold/scripts/memory_index.py` indexes project Markdown.
|
|
53
|
+
- `.agentic-scaffold/scripts/memory_search.py` searches indexed Markdown.
|
|
54
|
+
- `.agentic-scaffold/scripts/memory_bundle.py` writes a focused Markdown bundle for a task.
|
|
55
|
+
- `.agentic-scaffold/scripts/sync-context.sh` syncs the generated historical `CONTEXT.md`.
|
|
56
56
|
|
|
57
57
|
Generated memory files live under `.memory/` and are gitignored.
|
|
58
58
|
|
|
@@ -67,5 +67,5 @@ Some files contain placeholder content that must be completed:
|
|
|
67
67
|
{{/each}}
|
|
68
68
|
|
|
69
69
|
To complete these, invoke the `fill-docs` skill:
|
|
70
|
-
`.agents/skills/fill-docs/SKILL.md`
|
|
70
|
+
`.agentic-scaffold/.agents/skills/fill-docs/SKILL.md`
|
|
71
71
|
{{/if}}
|
|
@@ -11,17 +11,17 @@ import sqlite3
|
|
|
11
11
|
from pathlib import Path
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
ROOT = Path(__file__).resolve().parents[
|
|
14
|
+
ROOT = Path(__file__).resolve().parents[2]
|
|
15
15
|
DB_PATH = ROOT / ".memory" / "agent-memory.sqlite3"
|
|
16
16
|
VECTOR_DIMS = 64
|
|
17
17
|
|
|
18
18
|
INCLUDE_PATTERNS = (
|
|
19
|
-
"BUSINESS_LOGIC.md",
|
|
19
|
+
".agentic-scaffold/BUSINESS_LOGIC.md",
|
|
20
20
|
"AGENTS.md",
|
|
21
21
|
"CLAUDE.md",
|
|
22
|
-
"docs/**/*.md",
|
|
23
|
-
".scratchpad/**/*.md",
|
|
24
|
-
".history/**/*.md",
|
|
22
|
+
".agentic-scaffold/docs/**/*.md",
|
|
23
|
+
".agentic-scaffold/.scratchpad/**/*.md",
|
|
24
|
+
".agentic-scaffold/.history/**/*.md",
|
|
25
25
|
)
|
|
26
26
|
|
|
27
27
|
|
|
@@ -9,5 +9,5 @@ Diagnose and fix a described bug.
|
|
|
9
9
|
3. Identify the smallest root-cause fix.
|
|
10
10
|
4. Add or update a regression test when practical.
|
|
11
11
|
5. Run focused verification.
|
|
12
|
-
6. If `.agents/hooks/post-bugfix.md` exists, read and follow it.
|
|
13
|
-
Otherwise record shipped work in `.history/DD.MM.YYYY/README.md`.
|
|
12
|
+
6. If `.agentic-scaffold/.agents/hooks/post-bugfix.md` exists, read and follow it.
|
|
13
|
+
Otherwise record shipped work in `.agentic-scaffold/.history/DD.MM.YYYY/README.md`.
|
|
@@ -8,7 +8,7 @@ description: >
|
|
|
8
8
|
|
|
9
9
|
# Create Hook
|
|
10
10
|
|
|
11
|
-
Add a new agent lifecycle hook to `.agents/hooks/`. Hooks are markdown files
|
|
11
|
+
Add a new agent lifecycle hook to `.agentic-scaffold/.agents/hooks/`. Hooks are markdown files
|
|
12
12
|
that describe what an AI agent should do at a specific point in the workflow
|
|
13
13
|
(pre-feature, post-bugfix, etc.).
|
|
14
14
|
|
|
@@ -28,7 +28,7 @@ already chains to `post-feature.md` and `post-bugfix.md`.
|
|
|
28
28
|
|
|
29
29
|
### 2. Name and create the hook file
|
|
30
30
|
|
|
31
|
-
Name the file `<prefix>-<name>.md` and create it at `.agents/hooks/`. Use
|
|
31
|
+
Name the file `<prefix>-<name>.md` and create it at `.agentic-scaffold/.agents/hooks/`. Use
|
|
32
32
|
this anatomy:
|
|
33
33
|
|
|
34
34
|
```markdown
|
|
@@ -40,7 +40,7 @@ Fires <when this hook runs, e.g. "after every database migration">.
|
|
|
40
40
|
|
|
41
41
|
1. First step the agent should take.
|
|
42
42
|
2. Second step.
|
|
43
|
-
3. Run `.agents/hooks/scripts/<name>.sh` if it exists.
|
|
43
|
+
3. Run `.agentic-scaffold/.agents/hooks/scripts/<name>.sh` if it exists.
|
|
44
44
|
|
|
45
45
|
## When to skip
|
|
46
46
|
|
|
@@ -49,7 +49,7 @@ Conditions under which the agent should silently skip this hook.
|
|
|
49
49
|
|
|
50
50
|
### 3. Create the optional executable script
|
|
51
51
|
|
|
52
|
-
If the hook needs automation, create `.agents/hooks/scripts/<name>.sh`:
|
|
52
|
+
If the hook needs automation, create `.agentic-scaffold/.agents/hooks/scripts/<name>.sh`:
|
|
53
53
|
|
|
54
54
|
```bash
|
|
55
55
|
#!/usr/bin/env bash
|
|
@@ -66,16 +66,16 @@ Add a conditional reference in every skill where the hook should fire.
|
|
|
66
66
|
Use the existing pattern:
|
|
67
67
|
|
|
68
68
|
```markdown
|
|
69
|
-
4. If `.agents/hooks/<hook-name>.md` exists, read and follow it.
|
|
69
|
+
4. If `.agentic-scaffold/.agents/hooks/<hook-name>.md` exists, read and follow it.
|
|
70
70
|
```
|
|
71
71
|
|
|
72
72
|
Skills commonly wired to hooks:
|
|
73
73
|
|
|
74
74
|
| Skill | Hook point | File |
|
|
75
75
|
|-------|-----------|------|
|
|
76
|
-
| `implement` | pre + post | `.agents/skills/implement/SKILL.md` |
|
|
77
|
-
| `bugfix` | post | `.agents/skills/bugfix/SKILL.md` |
|
|
78
|
-
| `tdd` | pre + post | `.agents/skills/tdd/SKILL.md` |
|
|
76
|
+
| `implement` | pre + post | `.agentic-scaffold/.agents/skills/implement/SKILL.md` |
|
|
77
|
+
| `bugfix` | post | `.agentic-scaffold/.agents/skills/bugfix/SKILL.md` |
|
|
78
|
+
| `tdd` | pre + post | `.agentic-scaffold/.agents/skills/tdd/SKILL.md` |
|
|
79
79
|
|
|
80
80
|
### 5. Wire into the session close chain
|
|
81
81
|
|
|
@@ -26,7 +26,7 @@ Spend disproportionate effort here. **Be aggressive. Be creative. Refuse to give
|
|
|
26
26
|
7. **Property / fuzz loop.** If the bug is "sometimes wrong output", run 1000 random inputs and look for the failure mode.
|
|
27
27
|
8. **Bisection harness.** If the bug appeared between two known states (commit, dataset, version), automate "boot at state X, check, repeat" so you can `git bisect run` it.
|
|
28
28
|
9. **Differential loop.** Run the same input through old-version vs new-version (or two configs) and diff outputs.
|
|
29
|
-
10. **HITL bash script.** Last resort. If a human must click, drive _them_ with
|
|
29
|
+
10. **HITL bash script.** Last resort. If a human must click, drive _them_ with `.agentic-scaffold/scripts/hitl-loop.template.sh` so the loop is still structured. Captured output feeds back to you.
|
|
30
30
|
|
|
31
31
|
Build the right feedback loop, and the bug is 90% fixed.
|
|
32
32
|
|
|
@@ -13,17 +13,17 @@ Search for these markers across the project:
|
|
|
13
13
|
| Marker | File |
|
|
14
14
|
|--------|------|
|
|
15
15
|
| `<!-- Replace with... -->` | BUSINESS_LOGIC.md |
|
|
16
|
-
| `<!-- Define your domain terms... -->` | docs/context/glossary.md |
|
|
17
|
-
| `(populate as you...)` | docs/context/INDEX.md |
|
|
18
|
-
| `Placeholder for...` | docs/product/README.md, docs/engineering/README.md |
|
|
16
|
+
| `<!-- Define your domain terms... -->` | .agentic-scaffold/docs/context/glossary.md |
|
|
17
|
+
| `(populate as you...)` | .agentic-scaffold/docs/context/INDEX.md |
|
|
18
|
+
| `Placeholder for...` | .agentic-scaffold/docs/product/README.md, .agentic-scaffold/docs/engineering/README.md |
|
|
19
19
|
|
|
20
20
|
### 2. Prioritize
|
|
21
21
|
|
|
22
|
-
1.
|
|
23
|
-
2.
|
|
24
|
-
3.
|
|
25
|
-
4.
|
|
26
|
-
5.
|
|
22
|
+
1. **.agentic-scaffold/BUSINESS_LOGIC.md** — the project brain, read first by all agents
|
|
23
|
+
2. **.agentic-scaffold/docs/context/glossary.md** — ubiquitous language that agents use
|
|
24
|
+
3. **.agentic-scaffold/docs/product/README.md** — product spec extensions
|
|
25
|
+
4. **.agentic-scaffold/docs/engineering/README.md** — implementation conventions
|
|
26
|
+
5. **.agentic-scaffold/docs/context/INDEX.md** — navigation for historical context
|
|
27
27
|
|
|
28
28
|
### 3. Interview and fill
|
|
29
29
|
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
# Implement
|
|
2
2
|
|
|
3
|
-
Use a short Linear issue plus a `.scratchpad/` detailed plan, then implement
|
|
3
|
+
Use a short Linear issue plus a `.agentic-scaffold/.scratchpad/` detailed plan, then implement
|
|
4
4
|
when not in Plan Mode.
|
|
5
5
|
|
|
6
6
|
## Steps
|
|
7
7
|
|
|
8
8
|
1. Read `BUSINESS_LOGIC.md` and relevant ADRs.
|
|
9
|
-
2. If `.agents/hooks/pre-feature.md` exists, read and follow it.
|
|
10
|
-
3. Read the Linear issue and matching `.scratchpad/` detail file.
|
|
9
|
+
2. If `.agentic-scaffold/.agents/hooks/pre-feature.md` exists, read and follow it.
|
|
10
|
+
3. Read the Linear issue and matching `.agentic-scaffold/.scratchpad/` detail file.
|
|
11
11
|
4. If no scratchpad detail exists, create one before coding.
|
|
12
12
|
5. Implement the smallest complete slice that satisfies the plan.
|
|
13
13
|
6. Run focused verification.
|
|
14
|
-
7. If `.agents/hooks/post-feature.md` exists, read and follow it.
|
|
15
|
-
Otherwise record shipped work in `.history/DD.MM.YYYY/README.md`.
|
|
14
|
+
7. If `.agentic-scaffold/.agents/hooks/post-feature.md` exists, read and follow it.
|
|
15
|
+
Otherwise record shipped work in `.agentic-scaffold/.history/DD.MM.YYYY/README.md`.
|
|
16
16
|
|
|
17
|
-
Keep Linear descriptions short. Keep detailed reasoning in `.scratchpad/`.
|
|
17
|
+
Keep Linear descriptions short. Keep detailed reasoning in `.agentic-scaffold/.scratchpad/`.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# Issue
|
|
2
2
|
|
|
3
|
-
Create a Linear issue and matching `.scratchpad/` detail file.
|
|
3
|
+
Create a Linear issue and matching `.agentic-scaffold/.scratchpad/` detail file.
|
|
4
4
|
|
|
5
5
|
## Steps
|
|
6
6
|
|
|
7
7
|
1. Read `BUSINESS_LOGIC.md`.
|
|
8
8
|
2. Create a short Linear issue title and description.
|
|
9
|
-
3. Create `.scratchpad/<feature-slug>/<issue-slug>.md` with context, scope,
|
|
9
|
+
3. Create `.agentic-scaffold/.scratchpad/<feature-slug>/<issue-slug>.md` with context, scope,
|
|
10
10
|
acceptance criteria, source references, and open questions.
|
|
11
11
|
4. Link the Linear issue in the scratchpad file.
|
|
12
12
|
5. Keep implementation details out of Linear unless they are essential.
|
|
@@ -5,7 +5,7 @@ Create a monthly project summary.
|
|
|
5
5
|
## Steps
|
|
6
6
|
|
|
7
7
|
1. Read `BUSINESS_LOGIC.md`.
|
|
8
|
-
2. Read `.history/DD.MM.YYYY/README.md` files from the target month.
|
|
8
|
+
2. Read `.agentic-scaffold/.history/DD.MM.YYYY/README.md` files from the target month.
|
|
9
9
|
3. Review ADR changes from the month.
|
|
10
10
|
4. Compare shipped work against roadmap and scratchpad plans.
|
|
11
11
|
5. Summarize outcomes, decisions, risks, and next-month focus.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Next
|
|
2
|
+
|
|
3
|
+
Scan work history to determine the next development task. If no clear next step emerges, enter planning mode and interview the user.
|
|
4
|
+
|
|
5
|
+
## Steps
|
|
6
|
+
|
|
7
|
+
1. **Scan work history**
|
|
8
|
+
- Read `BUSINESS_LOGIC.md` for project goals and roadmap.
|
|
9
|
+
- Read `CONTEXT.md` (via `.agentic-scaffold/docs/context/INDEX.md`) for active context.
|
|
10
|
+
- Check `.agentic-scaffold/.scratchpad/` for active or ready work items.
|
|
11
|
+
- Read the latest entries in `.agentic-scaffold/.history/` (most recent day directories).
|
|
12
|
+
- Run `git log --oneline -20` to review recent commits.
|
|
13
|
+
- Check open issues or PRs if an issue tracker is configured.
|
|
14
|
+
|
|
15
|
+
2. **Identify next work**
|
|
16
|
+
- Look for items marked as "next", "ready", or "todo" in scratchpad files.
|
|
17
|
+
- Check for blocked items whose blocker may have been resolved.
|
|
18
|
+
- Review recent git history for incomplete or interrupted work.
|
|
19
|
+
- Cross-reference against the roadmap for unstarted priorities.
|
|
20
|
+
|
|
21
|
+
3. **Decide action**
|
|
22
|
+
- If a clear next task is found: present it to the user with a summary of why.
|
|
23
|
+
- If multiple candidates: rank them by priority and ask the user to pick.
|
|
24
|
+
- If nothing found: enter **planning mode** — ask the user what they want to work on next, then use `/to-issues` or `/to-prd` to formalize.
|
|
25
|
+
|
|
26
|
+
4. **Execute or plan**
|
|
27
|
+
- If user confirms the next task, proceed with implementation.
|
|
28
|
+
- If user chooses planning, guide discovery of what to build next.
|
|
@@ -6,6 +6,6 @@ Compare current work against the roadmap.
|
|
|
6
6
|
|
|
7
7
|
1. Read `BUSINESS_LOGIC.md`.
|
|
8
8
|
2. Read roadmap/backlog references in `CONTEXT.md` only through
|
|
9
|
-
|
|
10
|
-
3. Read `.scratchpad/` active plans and recent `.history/` entries.
|
|
9
|
+
`.agentic-scaffold/docs/context/INDEX.md`.
|
|
10
|
+
3. Read `.agentic-scaffold/.scratchpad/` active plans and recent `.agentic-scaffold/.history/` entries.
|
|
11
11
|
4. Report what is done, in progress, blocked, and next.
|
|
@@ -6,7 +6,7 @@ Create an all-time project summary.
|
|
|
6
6
|
|
|
7
7
|
1. Read `BUSINESS_LOGIC.md`.
|
|
8
8
|
2. Read `docs/adr/README.md` and accepted ADRs relevant to the summary.
|
|
9
|
-
3. Read `.history/**/*.md`.
|
|
10
|
-
4. Use
|
|
9
|
+
3. Read `.agentic-scaffold/.history/**/*.md`.
|
|
10
|
+
4. Use `.agentic-scaffold/scripts/memory_search.py` for gaps.
|
|
11
11
|
5. Summarize product direction, architecture, shipped work, open risks, and next
|
|
12
12
|
likely work.
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# Today
|
|
2
2
|
|
|
3
|
-
Create today's plan from the roadmap, `.scratchpad/`, `.history/`, and vector
|
|
3
|
+
Create today's plan from the roadmap, `.agentic-scaffold/.scratchpad/`, `.agentic-scaffold/.history/`, and vector
|
|
4
4
|
memory.
|
|
5
5
|
|
|
6
6
|
## Steps
|
|
7
7
|
|
|
8
8
|
1. Read `BUSINESS_LOGIC.md` first.
|
|
9
|
-
2. Search `.scratchpad/` for active or ready work.
|
|
10
|
-
3. Read the latest `.history/DD.MM.YYYY/README.md` files.
|
|
11
|
-
4. Run
|
|
9
|
+
2. Search `.agentic-scaffold/.scratchpad/` for active or ready work.
|
|
10
|
+
3. Read the latest `.agentic-scaffold/.history/DD.MM.YYYY/README.md` files.
|
|
11
|
+
4. Run `.agentic-scaffold/scripts/memory_search.py` for the user's stated focus if needed.
|
|
12
12
|
5. Produce a short plan for today with references to source files.
|
|
13
13
|
|
|
14
14
|
Do not create issues unless the user asks.
|
|
@@ -5,6 +5,6 @@ Create a weekly project summary.
|
|
|
5
5
|
## Steps
|
|
6
6
|
|
|
7
7
|
1. Read `BUSINESS_LOGIC.md`.
|
|
8
|
-
2. Read `.history/DD.MM.YYYY/README.md` files from the target week.
|
|
9
|
-
3. Check `.scratchpad/` for work that moved or remains blocked.
|
|
8
|
+
2. Read `.agentic-scaffold/.history/DD.MM.YYYY/README.md` files from the target week.
|
|
9
|
+
3. Check `.agentic-scaffold/.scratchpad/` for work that moved or remains blocked.
|
|
10
10
|
4. Summarize shipped work, decisions, risks, and suggested next week focus.
|