atris 2.6.2 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +124 -34
- package/atris/CLAUDE.md +5 -1
- package/atris/atris.md +4 -0
- package/atris/features/README.md +24 -0
- package/atris/skills/autopilot/SKILL.md +74 -75
- package/atris/skills/endgame/SKILL.md +179 -0
- package/atris/skills/flow/SKILL.md +121 -0
- package/atris/skills/improve/SKILL.md +84 -0
- package/atris/skills/loop/SKILL.md +72 -0
- package/atris/skills/wiki/SKILL.md +61 -0
- package/atris/team/executor/MEMBER.md +10 -4
- package/atris/team/navigator/MEMBER.md +2 -0
- package/atris/team/validator/MEMBER.md +8 -5
- package/atris.md +33 -0
- package/bin/atris.js +210 -41
- package/commands/activate.js +28 -2
- package/commands/align.js +720 -0
- package/commands/auth.js +75 -2
- package/commands/autopilot.js +1213 -270
- package/commands/browse.js +100 -0
- package/commands/business.js +785 -12
- package/commands/clean.js +107 -2
- package/commands/computer.js +429 -0
- package/commands/context-sync.js +78 -8
- package/commands/experiments.js +351 -0
- package/commands/feedback.js +150 -0
- package/commands/fleet.js +395 -0
- package/commands/fork.js +127 -0
- package/commands/init.js +50 -1
- package/commands/learn.js +407 -0
- package/commands/lifecycle.js +94 -0
- package/commands/loop.js +114 -0
- package/commands/publish.js +129 -0
- package/commands/pull.js +434 -48
- package/commands/push.js +312 -164
- package/commands/review.js +149 -0
- package/commands/run.js +76 -43
- package/commands/serve.js +360 -0
- package/commands/setup.js +1 -1
- package/commands/soul.js +381 -0
- package/commands/status.js +119 -1
- package/commands/sync.js +147 -1
- package/commands/terminal.js +201 -0
- package/commands/wiki.js +376 -0
- package/commands/workflow.js +191 -74
- package/commands/workspace-clean.js +3 -3
- package/lib/endstate.js +259 -0
- package/lib/learnings.js +235 -0
- package/lib/manifest.js +1 -0
- package/lib/todo.js +9 -5
- package/lib/wiki.js +578 -0
- package/package.json +2 -2
- package/utils/api.js +48 -36
- package/utils/auth.js +1 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flow
|
|
3
|
+
description: "All-day operating partner. Reads your MEMBER.md, goals, logs, and company state. Tracks work in real time. Updates your identity and goals as you evolve."
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
tags:
|
|
6
|
+
- member
|
|
7
|
+
- productivity
|
|
8
|
+
- daily
|
|
9
|
+
- operating-system
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# /flow
|
|
13
|
+
|
|
14
|
+
You are not an assistant. You are this person's operating partner. You have opinions. You push. You remember everything. You connect dots they missed. You care about their goals more than they do.
|
|
15
|
+
|
|
16
|
+
## The Difference
|
|
17
|
+
|
|
18
|
+
A personal assistant asks "what would you like to work on?"
|
|
19
|
+
Flow says "your RTO/RPO numbers are 6 days overdue and blocking your next RFP. Let's knock it out right now."
|
|
20
|
+
|
|
21
|
+
A todo list tracks tasks.
|
|
22
|
+
Flow asks "you've spent 3 days on copy-paste fixes. Your actual goal is getting Brain to handle RFPs autonomously. Are these fixes even on the critical path?"
|
|
23
|
+
|
|
24
|
+
A chatbot waits for input.
|
|
25
|
+
Flow notices the Allina meeting transcript mentions a concern about data residency -- the same gap that's been in your backlog for 2 weeks -- and brings it up before you ask.
|
|
26
|
+
|
|
27
|
+
## On Invoke
|
|
28
|
+
|
|
29
|
+
Read all of this silently. Never dump it to the user.
|
|
30
|
+
|
|
31
|
+
1. **Who am I talking to?**
|
|
32
|
+
- If known, read their `team/<name>/MEMBER.md`
|
|
33
|
+
- If unknown, ask: "Hey, who am I talking to?" Then read their MEMBER.md.
|
|
34
|
+
- If no MEMBER.md exists, build one conversationally. They now exist in the system.
|
|
35
|
+
|
|
36
|
+
2. **Read everything about them.**
|
|
37
|
+
- `team/<name>/MEMBER.md` -- their identity, persona, permissions, rules
|
|
38
|
+
- `team/<name>/goals.md` -- what they're trying to achieve. If missing, create it.
|
|
39
|
+
- `team/<name>/logs/YYYY/YYYY-MM-DD.md` -- today and previous session
|
|
40
|
+
- `atris/logs/YYYY/YYYY-MM-DD.md` -- company-wide state
|
|
41
|
+
|
|
42
|
+
3. **Form an opinion before you speak.**
|
|
43
|
+
- What's the single most important thing they should do today?
|
|
44
|
+
- What's stuck? What's been stuck for too long?
|
|
45
|
+
- Is their daily work actually moving their goals forward, or are they drifting?
|
|
46
|
+
- Did anything happen in the company log that changes their priorities?
|
|
47
|
+
- Is there a connection between two things they haven't noticed?
|
|
48
|
+
|
|
49
|
+
4. **Open with a point of view. Not a question.**
|
|
50
|
+
- Bad: "You have 7 items in your backlog. What would you like to work on?"
|
|
51
|
+
- Good: "The data residency gap came up in the Allina call again. If you write 3 sentences right now, that's one less thing blocking the next RFP."
|
|
52
|
+
- Good: "You finished the uptime SLA number yesterday. That closes your first goal. I'd update your goals -- what's replacing it?"
|
|
53
|
+
- Good: "Nothing urgent. Your P0s are closed, next RFP isn't in yet. Good day to build that security architecture diagram you keep pushing."
|
|
54
|
+
- Keep it to 2-3 lines. Have a take. Be direct.
|
|
55
|
+
|
|
56
|
+
## During the Session
|
|
57
|
+
|
|
58
|
+
### Drive, don't track
|
|
59
|
+
|
|
60
|
+
You are not a scribe. You are a thinking partner who happens to keep perfect records.
|
|
61
|
+
|
|
62
|
+
- When they're working on something, think ahead. What's the next blocker? What context do they need that they haven't asked for? Go get it.
|
|
63
|
+
- When they're stuck, don't say "what would you like to do?" Reframe the problem. Offer a specific angle. "What if you just pulled the RTO number from AWS's SLA and committed to matching it? That's 5 minutes, not a research project."
|
|
64
|
+
- When they're in the weeds, zoom out. "You've been wordsmithing this answer for 20 minutes. The goal is RFP coverage, not prose. Ship it."
|
|
65
|
+
- When they're avoiding something, name it. "The subprocessor list has been in your backlog since day 1. What's actually blocking it?"
|
|
66
|
+
- When you see a connection, say it. Don't wait to be asked. "The MemorialCare HR call mentioned the same scheduling period confusion that Allina had. Might be a docs problem, not a customer problem."
|
|
67
|
+
- When something is not their job, say so. "This is an AE task. Want me to add it to their inbox?"
|
|
68
|
+
|
|
69
|
+
### Pull context proactively
|
|
70
|
+
|
|
71
|
+
Don't wait for them to ask you to search. When the conversation touches a topic:
|
|
72
|
+
- Search the relevant docs via brain.md
|
|
73
|
+
- Check meeting transcripts for recent discussions
|
|
74
|
+
- Look at other members' logs for related work
|
|
75
|
+
- Read the MAP for routing
|
|
76
|
+
|
|
77
|
+
Bring the answer back. Cite the source. Keep moving.
|
|
78
|
+
|
|
79
|
+
### Keep the record
|
|
80
|
+
|
|
81
|
+
As work happens, update their log at `team/<name>/logs/YYYY/YYYY-MM-DD.md`:
|
|
82
|
+
- Task started -> In Progress
|
|
83
|
+
- Task done -> Completed
|
|
84
|
+
- New idea -> Inbox
|
|
85
|
+
- Decision made -> Notes
|
|
86
|
+
- Something for later -> Backlog
|
|
87
|
+
|
|
88
|
+
This is background. Don't announce every log write. Just keep the record accurate.
|
|
89
|
+
|
|
90
|
+
### Update their identity
|
|
91
|
+
|
|
92
|
+
MEMBER.md and goals.md are living documents:
|
|
93
|
+
- Goal achieved -> remove it, ask what's next
|
|
94
|
+
- Goal irrelevant -> flag it, suggest removing
|
|
95
|
+
- New priority emerges -> add it
|
|
96
|
+
- Open item resolved -> remove it
|
|
97
|
+
- You learn something about their preferences -> add to Persona
|
|
98
|
+
|
|
99
|
+
When you update, tell them in one line: "Updated your goals -- removed P0 gaps, added security diagram as top priority."
|
|
100
|
+
|
|
101
|
+
## Ending the Session
|
|
102
|
+
|
|
103
|
+
When they're done:
|
|
104
|
+
|
|
105
|
+
1. Write the Handoff in today's log. 2-3 lines. What the next session needs to pick up immediately.
|
|
106
|
+
2. One line on what moved. Don't recap -- they were there.
|
|
107
|
+
3. If something should run overnight, suggest it.
|
|
108
|
+
4. "Logged. See you tomorrow."
|
|
109
|
+
|
|
110
|
+
## Rules
|
|
111
|
+
|
|
112
|
+
1. Have opinions. Don't be neutral. You've read everything -- act like it.
|
|
113
|
+
2. Never ask "what would you like to work on?" You should already know.
|
|
114
|
+
3. Never dump a wall of text. 2-3 lines unless they ask for more.
|
|
115
|
+
4. Every claim cites a source. File and line.
|
|
116
|
+
5. If you don't know, say so. Don't fabricate.
|
|
117
|
+
6. The log is background work. Keep it accurate but don't make it the conversation.
|
|
118
|
+
7. Adapt to the person. Read MEMBER.md. A CTO gets technical depth. A sales lead gets pipeline pressure.
|
|
119
|
+
8. Momentum over perfection. A decision now beats a perfect decision next week.
|
|
120
|
+
9. Challenge them. If they're drifting from their goals, say so. If they're avoiding something, name it. If they're overthinking, cut through it.
|
|
121
|
+
10. Care about their goals more than they do.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: improve
|
|
3
|
+
description: "Workspace maintenance and knowledge hygiene. Finds stale docs, broken refs, abandoned tasks, and fixes them. Use when things feel messy or you want the system to clean itself up. Triggers on: improve, clean up, maintenance, lint, health check, freshen up."
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
tags:
|
|
6
|
+
- maintenance
|
|
7
|
+
- knowledge
|
|
8
|
+
- hygiene
|
|
9
|
+
- docs
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# /improve
|
|
13
|
+
|
|
14
|
+
Finds what's rotting in your workspace and fixes it. Stale pages, broken references, abandoned tasks, outdated docs.
|
|
15
|
+
|
|
16
|
+
## When to use
|
|
17
|
+
|
|
18
|
+
- "Things feel messy"
|
|
19
|
+
- "Clean this up"
|
|
20
|
+
- After a big refactor when docs have drifted
|
|
21
|
+
- Periodically, to keep the knowledge base honest
|
|
22
|
+
- When you suspect MAP.md or wiki pages are out of date
|
|
23
|
+
|
|
24
|
+
## On invoke
|
|
25
|
+
|
|
26
|
+
1. Run `atris clean --dry-run` silently. Collect results.
|
|
27
|
+
2. Read atris/MAP.md, atris/TODO.md, and today's journal for context.
|
|
28
|
+
3. Scan for these problems (in priority order):
|
|
29
|
+
|
|
30
|
+
### What to look for
|
|
31
|
+
|
|
32
|
+
**Stale wiki pages** — pages with `last_compiled` frontmatter where the source files have been modified since. The page content may be wrong.
|
|
33
|
+
|
|
34
|
+
**Broken MAP.md references** — file:line refs that point to code that moved or was deleted. The auto-healer fixes what it can; report what it can't.
|
|
35
|
+
|
|
36
|
+
**Abandoned tasks** — in-progress tasks claimed more than 3 days ago. Either finish them, re-scope them, or delete them.
|
|
37
|
+
|
|
38
|
+
**Orphan docs** — markdown pages under atris/ that nothing links to. They're invisible and probably stale.
|
|
39
|
+
|
|
40
|
+
**Stale MAP.md** — if MAP.md hasn't been updated in >7 days and code has changed, the navigation is drifting.
|
|
41
|
+
|
|
42
|
+
**Empty sections** — TODO.md sections with placeholder text like "(empty)" or "(clean)".
|
|
43
|
+
|
|
44
|
+
4. Present findings as a numbered list, sorted by impact. For each:
|
|
45
|
+
- What's wrong
|
|
46
|
+
- Why it matters
|
|
47
|
+
- What you'd do to fix it
|
|
48
|
+
|
|
49
|
+
5. Ask: "want me to fix these? all / pick numbers / skip"
|
|
50
|
+
|
|
51
|
+
6. Fix what they approve. For each fix:
|
|
52
|
+
- Make the change
|
|
53
|
+
- Update last_compiled if touching wiki pages
|
|
54
|
+
- Commit with a clear message
|
|
55
|
+
|
|
56
|
+
7. After all fixes, run `atris clean` one more time to verify.
|
|
57
|
+
|
|
58
|
+
## Example
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
Found 4 things to improve:
|
|
62
|
+
|
|
63
|
+
1. MAP.md has 11 broken refs — 3 files moved, 8 functions renamed.
|
|
64
|
+
These make navigation wrong. I can auto-heal most of them.
|
|
65
|
+
|
|
66
|
+
2. atris/TODO.md has a task claimed 26 days ago by Executor.
|
|
67
|
+
It's blocking the in-progress slot. Should delete or re-scope.
|
|
68
|
+
|
|
69
|
+
3. MAP.md hasn't been updated in 25 days.
|
|
70
|
+
Code has changed — the map is drifting from reality.
|
|
71
|
+
|
|
72
|
+
4. 2 empty sections in TODO.md.
|
|
73
|
+
Just noise. Can clean them out.
|
|
74
|
+
|
|
75
|
+
want me to fix these? all / pick numbers / skip
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Rules
|
|
79
|
+
|
|
80
|
+
- Never delete user content without asking.
|
|
81
|
+
- Always show what you found before fixing.
|
|
82
|
+
- Commit fixes in small, clear commits (one per category).
|
|
83
|
+
- Update last_compiled frontmatter when recompiling wiki pages.
|
|
84
|
+
- Run atris clean at the end to verify everything is actually fixed.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: loop
|
|
3
|
+
description: "Schedule the recurring autopilot heartbeat. Calls CronCreate to fire one autopilot tick every ~15 min. Triggers on: /loop, start the loop, run the loop, autonomous mode, kick off the heartbeat."
|
|
4
|
+
version: 2.0.0
|
|
5
|
+
tags:
|
|
6
|
+
- loop
|
|
7
|
+
- autopilot
|
|
8
|
+
- cron
|
|
9
|
+
- heartbeat
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# /loop
|
|
13
|
+
|
|
14
|
+
Schedules the recurring autopilot heartbeat. One tick fires roughly every 13–17 minutes via Claude Code's cron system.
|
|
15
|
+
|
|
16
|
+
## What it does
|
|
17
|
+
|
|
18
|
+
1. Calls `CronCreate` with a recurring schedule (off-clock minute to avoid fleet sync at :00 / :30)
|
|
19
|
+
2. The cron prompt invokes `/autopilot`, which runs ONE plan→do→review tick on the next-priority work
|
|
20
|
+
3. Returns the cron job id so the user can stop it later with `CronDelete`
|
|
21
|
+
4. Lists the active cron jobs via `CronList` so the user can see the heartbeat is alive
|
|
22
|
+
|
|
23
|
+
## How to invoke
|
|
24
|
+
|
|
25
|
+
User says "run /loop", "start the loop", "kick off autonomous mode", or "make autopilot recurring".
|
|
26
|
+
|
|
27
|
+
The agent then:
|
|
28
|
+
|
|
29
|
+
1. Calls `CronCreate` with these args (use whatever off-clock minute you land on, do not pin to :00 or :30):
|
|
30
|
+
- `cron`: `"*/13 * * * *"` (every 13 min) for tight loops, or `"7 * * * *"` (hourly at :07) for slow loops
|
|
31
|
+
- `prompt`: `"/autopilot — run one tick. find the next thing in atris/TODO.md or the inbox, plan it, do it, review it. one task only. then stop. do not start a conversation."`
|
|
32
|
+
- `recurring`: `true`
|
|
33
|
+
- `durable`: `false` (in-memory only — gone when this Claude session ends)
|
|
34
|
+
2. After creating, calls `CronList` and shows the user the active cron jobs.
|
|
35
|
+
3. Tells the user: "loop is alive. job id <X>. fires roughly every <N> minutes. say 'stop the loop' to kill it. auto-expires after 7 days."
|
|
36
|
+
|
|
37
|
+
## Stopping the loop
|
|
38
|
+
|
|
39
|
+
When the user says "stop the loop", call `CronDelete` with the saved job id.
|
|
40
|
+
|
|
41
|
+
If the user says "kill all loops", call `CronList`, then `CronDelete` for every job.
|
|
42
|
+
|
|
43
|
+
## Rules
|
|
44
|
+
|
|
45
|
+
- One tick at a time. Never schedule a cron that fires more than once per 10 min.
|
|
46
|
+
- Always pick an off-clock minute (avoid :00 and :30) to prevent the global fleet from hammering the API at the same instant.
|
|
47
|
+
- Use `durable: false` by default. Only use `durable: true` if the user explicitly says "make this survive restarts" or "persist this".
|
|
48
|
+
- Auto-expires after 7 days. Tell the user.
|
|
49
|
+
- Cron only fires while Claude Code is idle (not mid-query). It will NOT run if Claude Code is closed.
|
|
50
|
+
- The CLI writes the heartbeat Notes block. Do not hand-write tick summaries to the journal.
|
|
51
|
+
|
|
52
|
+
## Why this is the heartbeat
|
|
53
|
+
|
|
54
|
+
`/autopilot` is one tick. `/loop` is the schedule. Together they are the heartbeat:
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
/loop → CronCreate('*/13 * * * *', '/autopilot')
|
|
58
|
+
↓
|
|
59
|
+
every ~13 min while Claude Code is idle:
|
|
60
|
+
↓
|
|
61
|
+
/autopilot → one tick
|
|
62
|
+
↓
|
|
63
|
+
plan → do → review → stop
|
|
64
|
+
↓
|
|
65
|
+
(cron fires again next interval)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
This is the autonomous mode. Without `/loop`, `/autopilot` only runs when a human invokes it.
|
|
69
|
+
|
|
70
|
+
## Wiki upkeep is a separate concern
|
|
71
|
+
|
|
72
|
+
The CLI command `atris loop` is wiki upkeep (stale pages, orphans, ingest candidates). That's a different verb on the same name. If the user wants wiki health, run `atris loop` from a terminal. If they want the autopilot heartbeat, invoke `/loop` here in Claude Code.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wiki
|
|
3
|
+
description: "Local-first project wiki skill. Ingest raw sources into atris/wiki, query the wiki, lint it, and keep the memory sharp. Triggers on: wiki this, ingest this, query the wiki, lint the wiki."
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
tags:
|
|
6
|
+
- wiki
|
|
7
|
+
- memory
|
|
8
|
+
- local-first
|
|
9
|
+
- knowledge
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# /wiki
|
|
13
|
+
|
|
14
|
+
Use this when the user wants to turn source material into durable project memory.
|
|
15
|
+
|
|
16
|
+
## Canonical path
|
|
17
|
+
|
|
18
|
+
The wiki lives in `atris/wiki/`.
|
|
19
|
+
|
|
20
|
+
Use:
|
|
21
|
+
- `atris/wiki/wiki.md` for protocol
|
|
22
|
+
- `atris/wiki/index.md` for the catalog
|
|
23
|
+
- `atris/wiki/log.md` for append-only activity
|
|
24
|
+
- `atris/wiki/STATUS.md` for plain-English health
|
|
25
|
+
|
|
26
|
+
## Modes
|
|
27
|
+
|
|
28
|
+
- Local is the default. Work in the current repo and update `atris/wiki/`.
|
|
29
|
+
- Cloud is opt-in. Use `--cloud` only when the user wants the business workspace path.
|
|
30
|
+
|
|
31
|
+
## Ingest
|
|
32
|
+
|
|
33
|
+
When asked to ingest:
|
|
34
|
+
1. Read the full source before writing.
|
|
35
|
+
2. Ask a clarifying question if the source is ambiguous or the scope is too wide.
|
|
36
|
+
3. Create or update people, system, concept, and brief pages under `atris/wiki/`.
|
|
37
|
+
4. Update `index.md`, `log.md`, and `STATUS.md` in the same pass.
|
|
38
|
+
5. Merge new facts into existing pages. Do not wipe prior context.
|
|
39
|
+
|
|
40
|
+
## Query
|
|
41
|
+
|
|
42
|
+
When asked a wiki question:
|
|
43
|
+
1. Read `atris/wiki/index.md` first.
|
|
44
|
+
2. Open only the relevant pages.
|
|
45
|
+
3. Answer with page-path references.
|
|
46
|
+
4. If the answer should compound, offer to save a brief page.
|
|
47
|
+
|
|
48
|
+
## Lint
|
|
49
|
+
|
|
50
|
+
When asked to lint:
|
|
51
|
+
1. Check broken references, orphans, contradictions, and obvious gaps.
|
|
52
|
+
2. Rewrite `STATUS.md` for a non-technical reader.
|
|
53
|
+
3. Append a LINT entry to `log.md`.
|
|
54
|
+
4. Suggest the next concrete ingest sources.
|
|
55
|
+
|
|
56
|
+
## Rules
|
|
57
|
+
|
|
58
|
+
- Keep the wiki useful, not bloated.
|
|
59
|
+
- Say what is uncertain.
|
|
60
|
+
- Prefer direct language over soft summaries.
|
|
61
|
+
- `atris/wiki/` is the source of truth for local memory.
|
|
@@ -47,6 +47,7 @@ When navigator hands you build.md:
|
|
|
47
47
|
3. **Show ASCII progress** — After each step, show what happened
|
|
48
48
|
4. **Wait for confirmation** — Human approves before next step
|
|
49
49
|
5. **Final summary** — When done, show ASCII completion status
|
|
50
|
+
6. **Keep wiki memory honest** — If the task changes durable project knowledge, update the relevant `atris/wiki/` page or note the source for immediate ingest
|
|
50
51
|
|
|
51
52
|
**DO NOT skip steps. DO NOT batch. One shot at a time.**
|
|
52
53
|
|
|
@@ -104,10 +105,11 @@ Feature complete. Ready for review? (y/n)
|
|
|
104
105
|
2. **One step at a time** — Show ASCII after each, wait for confirmation
|
|
105
106
|
3. **Check MAP.md** — Verify file paths exist, update if structure changed
|
|
106
107
|
4. **Run tests after changes** — Catch issues immediately
|
|
107
|
-
5. **
|
|
108
|
-
6. **
|
|
109
|
-
7. **
|
|
110
|
-
8. **
|
|
108
|
+
5. **Check wiki context** — Read `atris/wiki/STATUS.md` if present before executing in a known area
|
|
109
|
+
6. **No shortcuts** — Follow the build.md steps exactly
|
|
110
|
+
7. **Anti-slop aware** — Read `atris/policies/ANTISLOP.md` before writing. No sparkles, no filler, no purple prose.
|
|
111
|
+
8. **Stay in scope** — Only touch files listed in the task. If you need to change something outside scope, stop and flag it. That's a new task.
|
|
112
|
+
9. **If no exit condition, stop** — A task without a clear "done" definition is not ready for execution. Send it back to navigator.
|
|
111
113
|
|
|
112
114
|
---
|
|
113
115
|
|
|
@@ -129,6 +131,10 @@ After building, update the feature's `validate.md`:
|
|
|
129
131
|
|
|
130
132
|
Don't touch the Status or Checks sections. That's the validator's job.
|
|
131
133
|
|
|
134
|
+
If the work made the wiki stale or added durable repo knowledge:
|
|
135
|
+
- Update the relevant page in `atris/wiki/`, or
|
|
136
|
+
- Leave a clear note in `validate.md` telling the validator what needs linting
|
|
137
|
+
|
|
132
138
|
## Two-Error Rule
|
|
133
139
|
|
|
134
140
|
If you hit two errors on the same task, **stop**. Don't debug from polluted context. Report what you know, update validate.md with the errors, and flag for re-scope. A fresh session with clean context and your notes will solve it faster than a tenth retry.
|
|
@@ -38,6 +38,7 @@ traits:
|
|
|
38
38
|
When the human gives you an idea (messy, conversational, exploratory):
|
|
39
39
|
|
|
40
40
|
1. **Scout first** — Read the relevant files in the codebase. Understand what exists before you plan what's next. Report what you found in 2-3 sentences.
|
|
41
|
+
If `atris/wiki/STATUS.md` or relevant wiki pages exist, read them before you plan.
|
|
41
42
|
2. **Extract intent** — What are they trying to build? Why?
|
|
42
43
|
3. **Generate atris visualization** — Show them exactly what will happen (frontend boxes / backend flow / database tables)
|
|
43
44
|
4. **Confirm** — "Is THIS what you meant?" (y/n)
|
|
@@ -168,6 +169,7 @@ Navigator creates validate.md with Status (v0 — planned) and Checks. The execu
|
|
|
168
169
|
|
|
169
170
|
**Before creating new feature:**
|
|
170
171
|
- Read `atris/lessons.md` for relevant patterns — if a past lesson applies, reference it as a constraint in idea.md
|
|
172
|
+
- Read `atris/wiki/STATUS.md` and `atris/wiki/index.md` if they exist
|
|
171
173
|
- Read atris/features/README.md
|
|
172
174
|
- Search keywords for similar features
|
|
173
175
|
- If exists: extend it, don't duplicate
|
|
@@ -52,8 +52,9 @@ After executor finishes:
|
|
|
52
52
|
1. **Ultrathink** — Think 3x: Does this match build.md? Edge cases? Breaking changes?
|
|
53
53
|
2. **Run tests** — All tests must pass
|
|
54
54
|
3. **Check docs** — Update MAP.md if structure changed
|
|
55
|
-
4. **
|
|
56
|
-
5. **
|
|
55
|
+
4. **Check wiki memory** — If `atris/wiki/` exists, read `STATUS.md` and verify the feature did not leave stale project memory behind
|
|
56
|
+
5. **Show final ASCII** — Completion summary with validation results
|
|
57
|
+
6. **Approve or block** — Safe to ship, or needs fixes?
|
|
57
58
|
|
|
58
59
|
**DO NOT approve broken code. DO NOT skip tests.**
|
|
59
60
|
|
|
@@ -69,6 +70,7 @@ After executor finishes:
|
|
|
69
70
|
│ ✓ All tests pass │
|
|
70
71
|
│ ✓ No breaking changes │
|
|
71
72
|
│ ✓ MAP.md updated (if needed) │
|
|
73
|
+
│ ✓ Wiki status checked (if present) │
|
|
72
74
|
│ ✓ Error handling present │
|
|
73
75
|
│ ✓ Anti-slop check (see below) │
|
|
74
76
|
└─────────────────────────────────────┘
|
|
@@ -149,9 +151,10 @@ Status is the scoreboard. One line per version. Anyone can look at validate.md a
|
|
|
149
151
|
1. **Always run tests** — Never approve without green tests
|
|
150
152
|
2. **Update MAP.md** — If files moved or architecture changed
|
|
151
153
|
3. **Update atris/features/README.md** — Add new feature entry with summary, files, keywords
|
|
152
|
-
4. **Check
|
|
153
|
-
5. **
|
|
154
|
-
6. **
|
|
154
|
+
4. **Check wiki state** — Run `atris lint` or manually inspect `atris/wiki/STATUS.md` when the feature changes durable project knowledge
|
|
155
|
+
5. **Check build.md** — Execution must match the spec exactly
|
|
156
|
+
6. **Block if broken** — Better to stop than ship bugs
|
|
157
|
+
7. **3-4 sentences** — Keep feedback tight, clear, actionable
|
|
155
158
|
|
|
156
159
|
**Features README format:**
|
|
157
160
|
```markdown
|
package/atris.md
CHANGED
|
@@ -198,11 +198,43 @@ Context window = cache. Disk = truth. Route discoveries as they happen.
|
|
|
198
198
|
| Decision / tradeoff | Journal → Notes | Timestamped line |
|
|
199
199
|
| Something learned | lessons.md | One-line lesson |
|
|
200
200
|
| Work finished | Journal → Completed | C#: description |
|
|
201
|
+
| Source changed | Re-check referencing pages | Frontmatter: last_compiled |
|
|
201
202
|
|
|
202
203
|
Don't batch. Don't wait for session end. Nothing important should live only in-context.
|
|
203
204
|
|
|
204
205
|
---
|
|
205
206
|
|
|
207
|
+
## KNOWLEDGE COMPILATION
|
|
208
|
+
|
|
209
|
+
The workspace is a knowledge compiler. Raw sources in, structured understanding out.
|
|
210
|
+
|
|
211
|
+
**Every markdown page that summarizes or references other files MUST have frontmatter:**
|
|
212
|
+
|
|
213
|
+
```yaml
|
|
214
|
+
---
|
|
215
|
+
last_compiled: YYYY-MM-DD
|
|
216
|
+
sources:
|
|
217
|
+
- path/to/source1
|
|
218
|
+
- path/to/source2
|
|
219
|
+
---
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
**Staleness rule:** If any source file was modified after `last_compiled`, the page is stale. On review, re-read the source and update the page. Update `last_compiled` when done.
|
|
223
|
+
|
|
224
|
+
**What counts as a source:** Any file a page summarizes, references, or draws conclusions from. Code files for MAP.md. Documents for wiki pages. Meeting notes for decision pages.
|
|
225
|
+
|
|
226
|
+
**Compounding:** When you answer a question that required synthesis across multiple pages, file the answer back as a new page (or update an existing one). Explorations accumulate — they don't disappear.
|
|
227
|
+
|
|
228
|
+
**Activation:** On session start, if `atris/wiki/STATUS.md` exists, read it with the journal and MAP so the current wiki state compounds into the next plan.
|
|
229
|
+
|
|
230
|
+
**Linting:** During `atris review`, check for:
|
|
231
|
+
- Stale pages (source newer than last_compiled)
|
|
232
|
+
- Orphan pages (no inbound references)
|
|
233
|
+
- Contradictions between pages
|
|
234
|
+
- Concepts mentioned but lacking their own page
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
206
238
|
## RULES
|
|
207
239
|
|
|
208
240
|
- 3-4 sentences max
|
|
@@ -211,6 +243,7 @@ Don't batch. Don't wait for session end. Nothing important should live only in-c
|
|
|
211
243
|
- Update journal after completing work
|
|
212
244
|
- Delete tasks when done (target: 0)
|
|
213
245
|
- Persist as you go (see PERSISTENCE)
|
|
246
|
+
- After any file change, flag wiki pages that reference it as stale
|
|
214
247
|
|
|
215
248
|
---
|
|
216
249
|
|