@oaklandzoo/ostup 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.
- package/LICENSE +21 -0
- package/README.md +191 -0
- package/bin/cli.mjs +150 -0
- package/package.json +58 -0
- package/src/config.mjs +41 -0
- package/src/credential-prompts.mjs +117 -0
- package/src/env-loader.mjs +27 -0
- package/src/exec.mjs +78 -0
- package/src/mvp-flow.mjs +219 -0
- package/src/preflight.mjs +55 -0
- package/src/project-prompts.mjs +220 -0
- package/src/prompts.mjs +60 -0
- package/src/scaffold.mjs +112 -0
- package/src/steps/github.mjs +21 -0
- package/src/steps/ingest.mjs +121 -0
- package/src/steps/inject.mjs +22 -0
- package/src/steps/next-app.mjs +41 -0
- package/src/steps/protection.mjs +181 -0
- package/src/steps/vercel.mjs +46 -0
- package/src/substitute.mjs +44 -0
- package/src/summary.mjs +34 -0
- package/src/templates.mjs +41 -0
- package/src/update.mjs +26 -0
- package/templates/.claude/commands/bootstrap.md +111 -0
- package/templates/.claude/commands/create-prd.md +85 -0
- package/templates/.claude/commands/generate-tasks.md +74 -0
- package/templates/.claude/commands/prompt-end.md +129 -0
- package/templates/.claude/commands/prompt-mid.md +74 -0
- package/templates/.claude/commands/prompt-start.md +85 -0
- package/templates/.ostup-config.yml.example +10 -0
- package/templates/AGENTS.md +33 -0
- package/templates/CLAUDE.md +256 -0
- package/templates/HANDOFF.md +49 -0
- package/templates/README.md +15 -0
- package/templates/_gitignore +9 -0
- package/templates/docs/ARCHITECTURE.md +59 -0
- package/templates/docs/MANUAL_TASKS.md +20 -0
- package/templates/docs/PROJECT_STATE.md +41 -0
- package/templates/docs/SESSION_NOTES.md +29 -0
- package/templates/inputs/README.md +25 -0
- package/templates/inputs/images/.gitkeep +0 -0
- package/templates/inputs/notes/.gitkeep +0 -0
- package/templates/inputs/references/.gitkeep +0 -0
- package/templates/inputs/research/.gitkeep +0 -0
- package/templates/tasks/.gitkeep +0 -0
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
> Master agent operating manual for this repo.
|
|
4
|
+
> Read on every session. Authoritative. Overrides any other instruction except explicit operator override in chat.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# PART 1: WHO THIS IS FOR
|
|
9
|
+
|
|
10
|
+
**User:** Mr. Goodshin (location TBD, USD, 12-hour time)
|
|
11
|
+
**Cognitive context:** TBD. Replace this block to fit the operator running the project.
|
|
12
|
+
**Tech stance:** TBD. Note coder vs non-coder, language preference, depth of explanation wanted.
|
|
13
|
+
**Devices:** TBD. Note primary OS, browsers, mobile use.
|
|
14
|
+
**Default editor:** TBD. Note preferred editor for code edits and for prose.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# PART 2: READ ORDER AT SESSION START
|
|
19
|
+
|
|
20
|
+
When the operator runs `/prompt-start` or just opens a new session, read in this exact order:
|
|
21
|
+
|
|
22
|
+
1. **`CLAUDE.md`** (this file): rules
|
|
23
|
+
2. **`HANDOFF.md`** (root): where we are RIGHT NOW
|
|
24
|
+
3. **`docs/MANUAL_TASKS.md`**: anything blocking that needs human action
|
|
25
|
+
4. **`docs/PROJECT_STATE.md`** (only if HANDOFF feels stale): priorities
|
|
26
|
+
5. **`docs/SESSION_NOTES.md`** (only last 50 lines, only if you need history): log
|
|
27
|
+
6. **`docs/ARCHITECTURE.md`** (only when working on infra/stack): file map
|
|
28
|
+
|
|
29
|
+
**Do not** start work until you have read 1, 2, and 3 minimum.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
# PART 3: HARD RULES (NEVER VIOLATE)
|
|
34
|
+
|
|
35
|
+
These override everything. Violation = error protocol.
|
|
36
|
+
|
|
37
|
+
1. **Never claim done without testing.** Run the build. Run the test. View the file. State exact verification performed.
|
|
38
|
+
2. **Verify files exist before referencing.** Use `ls` or `cat`. No working from memory.
|
|
39
|
+
3. **Never guess. Never assume. Never use training data.** ALWAYS read current source code, current DB state, current UI before any output. If you don't have the data, get it first. No exceptions.
|
|
40
|
+
4. **Alert at 20% context remaining.** Tell the operator. Recommend `/prompt-end` and fresh session.
|
|
41
|
+
5. **Deliver downloadable files, not paste heredocs.** Create files on disk. Don't dump 200 lines into chat.
|
|
42
|
+
6. **Destructive ops require explicit confirmation.** For `rm -rf`, `DROP TABLE`, force pushes, key rotations, mass deletes: stop and print exactly: `STOP: destructive step. Confirm to proceed.`
|
|
43
|
+
7. **Never invent field names, table names, file paths, API endpoints, or library APIs.** Read the source. Check the docs.
|
|
44
|
+
8. **No background promises.** Do all work in-message now. Never say "I'll work on this and get back to you."
|
|
45
|
+
9. **No assigning operator work the agent can do.** The operator's tasks must be necessary (credentials, physical action, paid action) or copy-pasteable.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
# PART 4: REPLY FORMAT (EVERY REPLY)
|
|
50
|
+
|
|
51
|
+
Every substantive reply has these sections in this order:
|
|
52
|
+
|
|
53
|
+
### 1. TL;DR
|
|
54
|
+
Three lines max. Result. Key steps. Caveat.
|
|
55
|
+
|
|
56
|
+
### 2. Deliverable
|
|
57
|
+
The asset, FIRST. Copy-paste ready, or attached file. If many files, single shell block that creates them, or a download.
|
|
58
|
+
|
|
59
|
+
### 3. Steps
|
|
60
|
+
Exact, numbered, platform-aware. Use UI paths like `Settings → Privacy → Location Services`. Provide Variant A/B if menus differ across versions.
|
|
61
|
+
|
|
62
|
+
### 4. Verification
|
|
63
|
+
What you checked. Common pitfalls avoided. Files that now exist with line counts.
|
|
64
|
+
|
|
65
|
+
### 5. Next-Step Trigger
|
|
66
|
+
What the operator runs/confirms next. What to send back.
|
|
67
|
+
|
|
68
|
+
### 6. Sources
|
|
69
|
+
Inline citations for any non-obvious or time-sensitive claim. Prefer official docs and primary sources.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
# PART 5: STYLE RULES
|
|
74
|
+
|
|
75
|
+
- **Numbered lists** for steps. Always.
|
|
76
|
+
- **Bold key labels.**
|
|
77
|
+
- **Short sentences.** Avoid dense paragraphs.
|
|
78
|
+
- **Tables** for option comparisons.
|
|
79
|
+
- **No em dashes.** Use periods or commas.
|
|
80
|
+
- **No ellipses.** Use periods.
|
|
81
|
+
- **No fluff.** No validation. No apologies. No feelings. No "great question."
|
|
82
|
+
- **One clear recommendation.** Then optionally two alternatives with trade-offs in a table.
|
|
83
|
+
- **For code:** minimal comments, strong defaults, include a one-line test command.
|
|
84
|
+
- **For data:** CSV with header row by default.
|
|
85
|
+
- **TL;DR header** on every substantive reply.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
# PART 6: DEFINITION OF DONE
|
|
90
|
+
|
|
91
|
+
A reply is complete only if it has ALL of:
|
|
92
|
+
|
|
93
|
+
- [ ] Completed asset at top
|
|
94
|
+
- [ ] Verified execution steps
|
|
95
|
+
- [ ] What happens after run
|
|
96
|
+
- [ ] What the operator must send back or confirm
|
|
97
|
+
- [ ] Source links if any claim is non-obvious or recent
|
|
98
|
+
|
|
99
|
+
If any are missing, the reply is incomplete.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
# PART 7: ERROR PROTOCOL
|
|
104
|
+
|
|
105
|
+
If you were wrong, respond with this exact structure:
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
STATEMENT OF ERROR: <what was wrong>
|
|
109
|
+
ROOT CAUSE: <why it happened>
|
|
110
|
+
CORRECTED INSTRUCTION: <what to do instead>
|
|
111
|
+
PREVENTION: <safeguard adopted now>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Then deliver the corrected asset.
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
# PART 8: CONTROL WORDS
|
|
119
|
+
|
|
120
|
+
The operator may type these as commands. Respond exactly as specified.
|
|
121
|
+
|
|
122
|
+
| Word | Action |
|
|
123
|
+
|---|---|
|
|
124
|
+
| **REFOCUS** | Reply: "Hard reset executed. State the core objective." Wait for input. |
|
|
125
|
+
| **CONTINUE** | Send the next queued section of a multi-part reply. |
|
|
126
|
+
| **COMPACT** | Shorten output. Keep all steps. Strip explanation. |
|
|
127
|
+
| **EXPAND** | Add detail and edge cases to the previous reply. |
|
|
128
|
+
| **DRY RUN** | Show exactly what would happen. Make no changes. |
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
# PART 9: CLARIFIERS PROTOCOL
|
|
133
|
+
|
|
134
|
+
- Bundle all clarifiers ONCE at the top when needed.
|
|
135
|
+
- Only ask for variables you cannot safely assume: credentials, undisclosed file paths, exact app versions, budget caps, private API keys, target account names, destructive actions.
|
|
136
|
+
- Use compact format with example answers.
|
|
137
|
+
- Otherwise proceed with smart defaults and state which defaults you used.
|
|
138
|
+
- Maximum 5 clarifiers ever. If you need more, you don't have enough context: stop and ask the operator to brief you.
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
# PART 10: RESEARCH AND CITATIONS
|
|
143
|
+
|
|
144
|
+
- Browse for anything time-volatile or niche.
|
|
145
|
+
- Cite sources inline. Prefer official docs, standards, primary data.
|
|
146
|
+
- Distinguish FACT vs INFERENCE explicitly when relevant.
|
|
147
|
+
- If claims could have changed recently, verify before advising.
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
# PART 11: MULTI-MESSAGE RESPONSES
|
|
152
|
+
|
|
153
|
+
If the best answer needs multiple messages, end the reply with:
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
STOP. Reply CONTINUE for more.
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Never silently truncate.
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
# PART 12: DEFAULTS (OVERRIDABLE)
|
|
164
|
+
|
|
165
|
+
- **OS:** macOS Sequoia or later
|
|
166
|
+
- **Browser:** Safari and Chrome, current versions
|
|
167
|
+
- **Mobile:** iOS / iPadOS current
|
|
168
|
+
- **Editor:** TextEdit, or VS Code for code
|
|
169
|
+
- **Local data folder:** `/Users/Shared/Projects/` unless the operator specifies otherwise
|
|
170
|
+
- **Risk posture:** safe and reversible first. Destructive only with explicit confirm.
|
|
171
|
+
- **Units:** USD, sq ft, gallons, miles, 12-hour time
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
# PART 13: PROJECT METADATA
|
|
176
|
+
|
|
177
|
+
> Filled by `/bootstrap`. Edit if facts change.
|
|
178
|
+
|
|
179
|
+
- **Name:** {{PROJECT_NAME}}
|
|
180
|
+
- **Purpose:** {{PROJECT_PURPOSE_ONE_SENTENCE}}
|
|
181
|
+
- **Owner / client:** {{OWNER_OR_CLIENT}}
|
|
182
|
+
- **Live URL:** {{LIVE_URL_OR_TBD}}
|
|
183
|
+
- **Repo path:** {{LOCAL_PATH}}
|
|
184
|
+
- **Deploy target:** {{DEPLOY_TARGET}}
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
# PART 14: STACK
|
|
189
|
+
|
|
190
|
+
- **Language:** {{LANGUAGE}}
|
|
191
|
+
- **Framework:** {{FRAMEWORK}}
|
|
192
|
+
- **Database:** {{DATABASE}}
|
|
193
|
+
- **Hosting:** {{HOSTING}}
|
|
194
|
+
- **Package manager:** {{NPM_PNPM_YARN_OR_OTHER}}
|
|
195
|
+
- **Other key services:** {{LIST}}
|
|
196
|
+
|
|
197
|
+
Detailed file map: `docs/ARCHITECTURE.md`.
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
# PART 15: COMMON COMMANDS
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
# Install deps
|
|
205
|
+
{{INSTALL_CMD}}
|
|
206
|
+
|
|
207
|
+
# Dev server
|
|
208
|
+
{{DEV_CMD}}
|
|
209
|
+
|
|
210
|
+
# Build
|
|
211
|
+
{{BUILD_CMD}}
|
|
212
|
+
|
|
213
|
+
# Test
|
|
214
|
+
{{TEST_CMD}}
|
|
215
|
+
|
|
216
|
+
# Type check / lint
|
|
217
|
+
{{TYPECHECK_CMD}}
|
|
218
|
+
|
|
219
|
+
# Deploy
|
|
220
|
+
{{DEPLOY_CMD}}
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
# PART 16: PROJECT-SPECIFIC CONVENTIONS
|
|
226
|
+
|
|
227
|
+
> Things unique to THIS repo. Filled by `/bootstrap` or as discovered.
|
|
228
|
+
|
|
229
|
+
- Operator materials live in `{{INPUTS_PATH}}`. Read `{{INPUTS_PATH}}README.md` for the layout. If `{{INPUTS_PATH}}INGEST_MANIFEST.md` exists, read it before starting work.
|
|
230
|
+
- {{CONVENTION_1}}
|
|
231
|
+
- {{CONVENTION_2}}
|
|
232
|
+
- {{CONVENTION_3}}
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
# PART 17: DON'T TOUCH
|
|
237
|
+
|
|
238
|
+
> Paths the agent must never modify without explicit instruction from the operator.
|
|
239
|
+
|
|
240
|
+
- `.env`, `.env.local`, `.env.production`, any secret files
|
|
241
|
+
- `package-lock.json`, `pnpm-lock.yaml`, `yarn.lock` (let the package manager regen)
|
|
242
|
+
- `.git/` internals
|
|
243
|
+
- {{OTHER_PROTECTED_PATHS}}
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
# PART 18: WHERE TO LOOK
|
|
248
|
+
|
|
249
|
+
| Need | File |
|
|
250
|
+
|---|---|
|
|
251
|
+
| Where am I right now | `HANDOFF.md` |
|
|
252
|
+
| What's blocking | `docs/MANUAL_TASKS.md` |
|
|
253
|
+
| What we're prioritizing | `docs/PROJECT_STATE.md` |
|
|
254
|
+
| What happened recently | `docs/SESSION_NOTES.md` |
|
|
255
|
+
| Stack and file map | `docs/ARCHITECTURE.md` |
|
|
256
|
+
| How to behave | `CLAUDE.md` (this file) |
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# HANDOFF.md
|
|
2
|
+
|
|
3
|
+
> **READ THIS FIRST.** Single page. Current state only. Overwritten by `/prompt-end` every session.
|
|
4
|
+
|
|
5
|
+
## Where we are right now
|
|
6
|
+
|
|
7
|
+
**Status:** {{ONE_LINE_CURRENT_STATE}}
|
|
8
|
+
**Last session ended:** {{YYYY-MM-DD_HH:MM}}
|
|
9
|
+
**Branch:** {{CURRENT_BRANCH}}
|
|
10
|
+
**Working tree:** {{CLEAN_OR_DIRTY_FILE_COUNT}}
|
|
11
|
+
|
|
12
|
+
## What to do next
|
|
13
|
+
|
|
14
|
+
The very next action when the operator opens a session:
|
|
15
|
+
|
|
16
|
+
1. {{NEXT_ACTION_STEP_1}}
|
|
17
|
+
2. {{NEXT_ACTION_STEP_2}}
|
|
18
|
+
3. {{NEXT_ACTION_STEP_3}}
|
|
19
|
+
|
|
20
|
+
## Active context
|
|
21
|
+
|
|
22
|
+
**Current objective:** {{WHAT_WE_ARE_BUILDING_OR_FIXING}}
|
|
23
|
+
|
|
24
|
+
**In progress:**
|
|
25
|
+
- {{TASK}}: {{STATUS}}
|
|
26
|
+
|
|
27
|
+
**Blocked on:**
|
|
28
|
+
- {{BLOCKER_OR_NONE}}
|
|
29
|
+
|
|
30
|
+
**Decisions pending operator input:**
|
|
31
|
+
- {{QUESTION_OR_NONE}}
|
|
32
|
+
|
|
33
|
+
## Files I touched last session
|
|
34
|
+
|
|
35
|
+
- {{PATH}}: {{WHY}}
|
|
36
|
+
- {{PATH}}: {{WHY}}
|
|
37
|
+
|
|
38
|
+
## Don't forget
|
|
39
|
+
|
|
40
|
+
- {{IMPORTANT_REMINDER_OR_NONE}}
|
|
41
|
+
|
|
42
|
+
## Safe to skip if you read this
|
|
43
|
+
|
|
44
|
+
- `docs/SESSION_NOTES.md` (full history): only read if you need to know how we got here
|
|
45
|
+
- `docs/PROJECT_STATE.md` (priorities): only read if context here feels stale
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
*Generated by `/prompt-end`. To regenerate from scratch, run `/bootstrap`.*
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# {{PROJECT_NAME}}
|
|
2
|
+
|
|
3
|
+
{{PROJECT_PURPOSE_ONE_SENTENCE}}
|
|
4
|
+
|
|
5
|
+
## Owner
|
|
6
|
+
|
|
7
|
+
{{OWNER_OR_CLIENT}}
|
|
8
|
+
|
|
9
|
+
## Deploy target
|
|
10
|
+
|
|
11
|
+
{{LIVE_URL_OR_TBD}}
|
|
12
|
+
|
|
13
|
+
## Working with the agent
|
|
14
|
+
|
|
15
|
+
Open Claude Code and run `/prompt-start` to brief the agent on current state. See `CLAUDE.md` for the full operating manual.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# ARCHITECTURE.md
|
|
2
|
+
|
|
3
|
+
> Stack details, file map, deploy pipeline. Reference doc.
|
|
4
|
+
> Filled by `/bootstrap`. Updated when stack changes.
|
|
5
|
+
|
|
6
|
+
## Stack
|
|
7
|
+
|
|
8
|
+
| Layer | Tech | Version |
|
|
9
|
+
|---|---|---|
|
|
10
|
+
| Language | {{LANGUAGE}} | {{VERSION}} |
|
|
11
|
+
| Framework | {{FRAMEWORK}} | {{VERSION}} |
|
|
12
|
+
| Database | {{DATABASE}} | {{VERSION}} |
|
|
13
|
+
| Auth | {{AUTH}} | - |
|
|
14
|
+
| Hosting | {{HOSTING}} | - |
|
|
15
|
+
| CDN | {{CDN}} | - |
|
|
16
|
+
| Email | {{EMAIL_SERVICE}} | - |
|
|
17
|
+
| Analytics | {{ANALYTICS}} | - |
|
|
18
|
+
| Payments | {{PAYMENTS}} | - |
|
|
19
|
+
| Other | {{OTHER}} | - |
|
|
20
|
+
|
|
21
|
+
## File map
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
{{REPO_NAME}}/
|
|
25
|
+
├── {{DIR_1}}/ # {{WHAT_LIVES_HERE}}
|
|
26
|
+
├── {{DIR_2}}/ # {{WHAT_LIVES_HERE}}
|
|
27
|
+
└── {{DIR_3}}/ # {{WHAT_LIVES_HERE}}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Environment variables
|
|
31
|
+
|
|
32
|
+
> Names only. Never paste secrets here.
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
{{ENV_VAR_1}}= # purpose
|
|
36
|
+
{{ENV_VAR_2}}= # purpose
|
|
37
|
+
{{ENV_VAR_3}}= # purpose
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Source of truth: `.env.local` (git-ignored). Template: `.env.example`.
|
|
41
|
+
|
|
42
|
+
## Deploy
|
|
43
|
+
|
|
44
|
+
- **Production:** {{PROD_DEPLOY_HOW}}
|
|
45
|
+
- **Staging:** {{STAGING_OR_NONE}}
|
|
46
|
+
- **Trigger:** {{AUTO_OR_MANUAL}}
|
|
47
|
+
- **Domain DNS:** {{WHERE_DNS_LIVES}}
|
|
48
|
+
|
|
49
|
+
## External services
|
|
50
|
+
|
|
51
|
+
| Service | What it does | Where credentials live |
|
|
52
|
+
|---|---|---|
|
|
53
|
+
| {{SERVICE_1}} | {{PURPOSE}} | {{1Password / .env / dashboard}} |
|
|
54
|
+
| {{SERVICE_2}} | {{PURPOSE}} | {{LOCATION}} |
|
|
55
|
+
|
|
56
|
+
## Known gotchas
|
|
57
|
+
|
|
58
|
+
- {{GOTCHA_1}}
|
|
59
|
+
- {{GOTCHA_2}}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# MANUAL_TASKS.md
|
|
2
|
+
|
|
3
|
+
> Tasks the agent **cannot** do. The operator must do these manually.
|
|
4
|
+
> Examples: paying for a service, entering a password, DNS changes, physical actions, account creation behind 2FA.
|
|
5
|
+
|
|
6
|
+
## Active
|
|
7
|
+
|
|
8
|
+
<!-- Format:
|
|
9
|
+
- [ ] <task>, needed because <reason>, added <YYYY-MM-DD>
|
|
10
|
+
-->
|
|
11
|
+
|
|
12
|
+
## Done
|
|
13
|
+
|
|
14
|
+
<!-- Move completed items here with completion date -->
|
|
15
|
+
|
|
16
|
+
## Notes
|
|
17
|
+
|
|
18
|
+
- Agent appends to "Active" via `/prompt-end` when it hits a wall.
|
|
19
|
+
- The operator checks this file before each session and clears what's done.
|
|
20
|
+
- If a task has been Active for >7 days, escalate or remove.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# PROJECT_STATE.md
|
|
2
|
+
|
|
3
|
+
> Rolling snapshot of where the project is right now.
|
|
4
|
+
> Updated by `/prompt-end` when architecture or priorities change.
|
|
5
|
+
> Source of truth for "what are we working on."
|
|
6
|
+
|
|
7
|
+
## Status
|
|
8
|
+
|
|
9
|
+
- **Phase:** {{PHASE}} <!-- e.g. "Pre-launch", "MVP shipping", "Maintenance" -->
|
|
10
|
+
- **Last shipped:** {{LAST_SHIP_DATE_AND_FEATURE}}
|
|
11
|
+
- **Current branch:** {{BRANCH}}
|
|
12
|
+
- **Live URL health:** {{HEALTHY_OR_ISSUES}}
|
|
13
|
+
|
|
14
|
+
## Top 3 priorities
|
|
15
|
+
|
|
16
|
+
1. {{P1}}
|
|
17
|
+
2. {{P2}}
|
|
18
|
+
3. {{P3}}
|
|
19
|
+
|
|
20
|
+
## In progress
|
|
21
|
+
|
|
22
|
+
- {{ACTIVE_TASK_1}}, owner: agent, eta: {{ETA}}
|
|
23
|
+
- {{ACTIVE_TASK_2}}, owner: operator, eta: {{ETA}}
|
|
24
|
+
|
|
25
|
+
## Recently done
|
|
26
|
+
|
|
27
|
+
- {{DONE_1}}
|
|
28
|
+
- {{DONE_2}}
|
|
29
|
+
|
|
30
|
+
## Blockers
|
|
31
|
+
|
|
32
|
+
- {{BLOCKER_OR_NONE}}
|
|
33
|
+
|
|
34
|
+
## Key paths
|
|
35
|
+
|
|
36
|
+
- {{IMPORTANT_FILE_OR_DIR_1}}: {{WHY_IT_MATTERS}}
|
|
37
|
+
- {{IMPORTANT_FILE_OR_DIR_2}}: {{WHY_IT_MATTERS}}
|
|
38
|
+
|
|
39
|
+
## Open questions for the operator
|
|
40
|
+
|
|
41
|
+
- {{QUESTION_OR_NONE}}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# SESSION_NOTES.md
|
|
2
|
+
|
|
3
|
+
> Append-only log. Newest entry on top.
|
|
4
|
+
> Written by `/prompt-end` at session close.
|
|
5
|
+
> Read by `/prompt-start` (last 50 lines) at session open.
|
|
6
|
+
|
|
7
|
+
<!-- Entry format:
|
|
8
|
+
|
|
9
|
+
## YYYY-MM-DD HH:MM Session title
|
|
10
|
+
|
|
11
|
+
**Objective:** <what the operator asked for>
|
|
12
|
+
|
|
13
|
+
**Done:**
|
|
14
|
+
- <deliverable>
|
|
15
|
+
|
|
16
|
+
**Files changed:**
|
|
17
|
+
- <path>: <reason>
|
|
18
|
+
|
|
19
|
+
**Decisions made:**
|
|
20
|
+
- <decision and why>
|
|
21
|
+
|
|
22
|
+
**Open threads:**
|
|
23
|
+
- <thing left unfinished>
|
|
24
|
+
|
|
25
|
+
**Next session should:**
|
|
26
|
+
- <specific next action>
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
-->
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# inputs/
|
|
2
|
+
|
|
3
|
+
This folder is for material you bring into the project: research, reference repos, brand images, scratch notes, anything you want the agent to read but that is not application code.
|
|
4
|
+
|
|
5
|
+
## What goes where
|
|
6
|
+
|
|
7
|
+
| Subfolder | What to drop here |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `research/` | PDFs, articles, notes, transcripts, exported websites |
|
|
10
|
+
| `references/` | Cloned repos or code samples worth quoting |
|
|
11
|
+
| `images/` | Brand assets, mockups, screenshots, photos |
|
|
12
|
+
| `notes/` | Free-form scratch notes, voice memos transcribed, ideas |
|
|
13
|
+
| (root) | Loose files that do not fit a subfolder |
|
|
14
|
+
|
|
15
|
+
## Is this folder tracked by git?
|
|
16
|
+
|
|
17
|
+
No, by default. The repo's `.gitignore` excludes everything in `{{INPUTS_PATH}}` except this `README.md`. If you want a particular file committed, edit `.gitignore` and weaken the `inputs/` rule, then `git add <path>`.
|
|
18
|
+
|
|
19
|
+
## Manifest
|
|
20
|
+
|
|
21
|
+
If you scaffolded with `ostup init --ingest <path>` (or answered "yes" to the materials prompt), an `INGEST_MANIFEST.md` will be next to this file listing what was copied in.
|
|
22
|
+
|
|
23
|
+
## Telling agents about new material
|
|
24
|
+
|
|
25
|
+
Drop files in. Tell the agent: "Read `{{INPUTS_PATH}}`." That is enough. The agent has been pre-instructed via `CLAUDE.md` to look here.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|