atris 3.74.4 → 3.74.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/FOR_AGENTS.md +12 -12
  2. package/atris/AGENTS.md +7 -7
  3. package/atris/CLAUDE.md +10 -10
  4. package/atris/policies/atris-backend.md +1 -1
  5. package/atris/policies/atris-design.md +71 -71
  6. package/atris/policies/design-seed.md +28 -28
  7. package/atris/policies/writing.md +1 -1
  8. package/atris/skills/apps/SKILL.md +3 -3
  9. package/atris/skills/atris-feedback/SKILL.md +2 -2
  10. package/atris/skills/autopilot/SKILL.md +10 -10
  11. package/atris/skills/blocks/SKILL.md +16 -16
  12. package/atris/skills/calendar/SKILL.md +1 -1
  13. package/atris/skills/clawhub/atris/SKILL.md +4 -4
  14. package/atris/skills/clawhub/philosophy-of-work/SKILL.md +7 -7
  15. package/atris/skills/create-app/SKILL.md +18 -18
  16. package/atris/skills/create-member/SKILL.md +11 -11
  17. package/atris/skills/design/SKILL.md +1 -1
  18. package/atris/skills/drive/SKILL.md +25 -25
  19. package/atris/skills/email-agent/SKILL.md +11 -11
  20. package/atris/skills/endgame/SKILL.md +33 -33
  21. package/atris/skills/magic-inbox/SKILL.md +15 -15
  22. package/atris/skills/notion/SKILL.md +1 -1
  23. package/atris/skills/ramp/SKILL.md +7 -7
  24. package/atris/skills/research-search/SKILL.md +7 -7
  25. package/atris/skills/slides/SKILL.md +7 -7
  26. package/atris/skills/tidy/SKILL.md +11 -11
  27. package/atris/skills/wake/SKILL.md +11 -11
  28. package/atris/skills/writing/SKILL.md +5 -5
  29. package/atris/team/_template/SOUL.md +3 -3
  30. package/atris/team/brainstormer/MEMBER.md +2 -2
  31. package/atris/team/launcher/MEMBER.md +2 -2
  32. package/atris/team/mission-lead/MISSION.md +7 -7
  33. package/atris/team/opus-overnight/MISSION.md +16 -16
  34. package/atris/team/opus-overnight/STEERING.md +5 -5
  35. package/atris.md +9 -0
  36. package/bin/atris.js +16 -3
  37. package/commands/campaign.js +17 -2
  38. package/commands/card.js +19 -12
  39. package/commands/engine.js +92 -17
  40. package/commands/gm.js +30 -0
  41. package/commands/idea.js +263 -0
  42. package/commands/init.js +11 -2
  43. package/commands/land.js +39 -18
  44. package/commands/mission.js +4 -3
  45. package/commands/ninety-nine.js +288 -0
  46. package/commands/one-lap.js +46 -27
  47. package/commands/reel.js +12 -7
  48. package/commands/sync.js +10 -2
  49. package/lib/campaign-keep.js +23 -8
  50. package/lib/campaign-loop.js +24 -5
  51. package/lib/claude-boot-block.js +7 -4
  52. package/lib/engine-registry.js +139 -1
  53. package/lib/fleet.js +11 -2
  54. package/lib/gm-bet.js +338 -34
  55. package/lib/gm-phone-page.js +325 -33
  56. package/lib/gm-phone.js +5 -1
  57. package/lib/gm-season.js +14 -0
  58. package/lib/headless-chrome.js +39 -0
  59. package/lib/idea-gate.js +33 -0
  60. package/lib/idea-inbox.js +220 -0
  61. package/lib/idea-ledger.js +196 -0
  62. package/lib/idea-tick.js +384 -0
  63. package/lib/known-commands.js +1 -1
  64. package/lib/member-engine.js +1 -0
  65. package/lib/ninety-nine-sync.js +156 -0
  66. package/lib/ninety-nine.js +247 -0
  67. package/lib/opening-lines.js +94 -0
  68. package/lib/roster-markdown.js +39 -1
  69. package/lib/roster-models.js +1 -1
  70. package/lib/roster-swap.js +353 -0
  71. package/lib/spawn-env.js +29 -2
  72. package/lib/wish-audit.js +14 -0
  73. package/lib/yes-lock.js +343 -253
  74. package/lib/zen-apply.js +5 -3
  75. package/lib/zen.js +13 -1
  76. package/package.json +1 -1
  77. package/templates/business-starter/CLAUDE.md +7 -7
  78. package/templates/business-starter/MAP.md +1 -1
  79. package/templates/business-starter/TODO.md +1 -1
  80. package/templates/business-starter/atris.md +2 -2
  81. package/templates/business-starter/context/README.md +6 -6
  82. package/templates/business-starter/context/live-workspace.md +1 -1
  83. package/templates/business-starter/goals.md +1 -1
  84. package/templates/business-starter/instructions.md +1 -1
  85. package/templates/business-starter/memory.md +4 -4
  86. package/templates/business-starter/persona.md +3 -3
  87. package/templates/business-starter/policies/LESSONS.md +1 -1
  88. package/templates/business-starter/reports/README.md +1 -1
  89. package/templates/business-starter/skills/README.md +1 -1
  90. package/templates/business-starter/team/README.md +1 -1
  91. package/templates/business-starter/team/START_HERE.md +1 -1
  92. package/templates/business-starter/team/_template/SOUL.md +3 -3
  93. package/templates/business-starter/team/comms/SOUL.md +2 -2
  94. package/templates/business-starter/team/ops/SOUL.md +4 -4
  95. package/templates/business-starter/team/research/SOUL.md +3 -3
  96. package/templates/business-starter/wiki/index.md +1 -1
  97. package/templates/research-canonical/CLAUDE.md +7 -7
  98. package/templates/research-canonical/MAP.md +1 -1
  99. package/templates/research-canonical/TODO.md +1 -1
  100. package/templates/research-canonical/atris.md +2 -2
  101. package/templates/research-canonical/context/README.md +8 -8
  102. package/templates/research-canonical/context/live-workspace.md +1 -1
  103. package/templates/research-canonical/goals.md +2 -2
  104. package/templates/research-canonical/instructions.md +1 -1
  105. package/templates/research-canonical/memory.md +4 -4
  106. package/templates/research-canonical/persona.md +1 -1
  107. package/templates/research-canonical/policies/LESSONS.md +1 -1
  108. package/templates/research-canonical/reports/README.md +1 -1
  109. package/templates/research-canonical/skills/README.md +1 -1
  110. package/templates/research-canonical/team/README.md +1 -1
  111. package/templates/research-canonical/team/eval/SOUL.md +1 -1
  112. package/templates/research-canonical/team/experiment/SOUL.md +2 -2
  113. package/templates/research-canonical/team/hypothesis/SOUL.md +3 -3
  114. package/templates/research-canonical/team/literature/SOUL.md +2 -2
  115. package/templates/research-canonical/wiki/briefs/research-program.md +1 -1
  116. package/templates/research-canonical/wiki/index.md +1 -1
  117. package/utils/auth.js +1 -0
@@ -5,34 +5,34 @@ version: 1.2.0
5
5
  tags: [planning, vision, reverse-engineer, atris, wiki, todo, flow]
6
6
  ---
7
7
 
8
- > **Sister skill: /flow** — flow runs the same engine in reverse. flow chains forward from identity (who you are → today's next move). endgame chains backward from horizon (where you're going → today's next move). They meet at the same point: the next thing the agent should ship. Use both. Run flow at sunrise to set identity, run endgame at every TODO.md boundary to set horizon, and let /autopilot tick between them.
8
+ > **Sister skill: /flow**: flow runs the same engine in reverse. flow chains forward from identity (who you are → today's next move). endgame chains backward from horizon (where you're going → today's next move). They meet at the same point: the next thing the agent should ship. Use both. Run flow at sunrise to set identity, run endgame at every TODO.md boundary to set horizon, and let /autopilot tick between them.
9
9
 
10
10
  # /endgame
11
11
 
12
- **Purpose:** help the human (or agent) reach their intent and goal **faster** by leveraging what the wiki already knows. Without endgame, they redo thinking. With endgame, they reach the next move in one pass — and write that move into TODO.md so the autopilot loop can pursue it without re-asking.
12
+ **Purpose:** help the human (or agent) reach their intent and goal **faster** by leveraging what the wiki already knows. Without endgame, they redo thinking. With endgame, they reach the next move in one pass, and write that move into TODO.md so the autopilot loop can pursue it without re-asking.
13
13
 
14
14
  Most planning is forward-greedy: *what's the next ticket?* Endgame is backward: *what does winning look like, and what's the shortest path from here?*
15
15
 
16
- > "You can't connect the dots looking forward; you can only connect them looking backward." — Steve Jobs
16
+ > "You can't connect the dots looking forward; you can only connect them looking backward.": Steve Jobs
17
17
 
18
- ## Step 0 — CHECK FOR EXISTING ENDGAME FIRST
18
+ ## Step 0: CHECK FOR EXISTING ENDGAME FIRST
19
19
 
20
- Before anything else, read `atris/TODO.md`. If it already has a `## Endgame` section AND uncompleted `[endgame]`-tagged tasks in `## Backlog`, **do not pick a new endgame**. Instead reply: "current endgame `<slug>` still active — N steps remaining. Run `/autopilot` to continue, or `force /endgame` to reset." Then exit.
20
+ Before anything else, read `atris/TODO.md`. If it already has a `## Endgame` section AND uncompleted `[endgame]`-tagged tasks in `## Backlog`, **do not pick a new endgame**. Instead reply: "current endgame `<slug>` still active, N steps remaining. Run `/autopilot` to continue, or `force /endgame` to reset." Then exit.
21
21
 
22
22
  This rule exists so the loop pursues the current horizon to completion instead of constantly repicking.
23
23
 
24
- ## Step 1 — READ THE INBOX, WIKI, LOGS
24
+ ## Step 1: READ THE INBOX, WIKI, LOGS
25
25
 
26
26
  Before picking a new horizon, read what already exists. The wiki + logs are the user's paid-for memory; not using them means they're paying twice.
27
27
 
28
- - `atris/lessons.md` — past surprises and failures the validator wrote down. Read this FIRST. Avoid horizons that hit the same rocks.
29
- - `atris/wiki/STATUS.md` — current state, last loop findings, suggested next ingests
30
- - `atris/wiki/index.md` — what pages already exist
31
- - `atris/wiki/briefs/` — most recent cross-cutting brief pages (often already contain a horizon)
32
- - `atris/MAP.md` — what code exists today
33
- - `atris/TODO.md` — what's queued, what's done
34
- - `atris/logs/YYYY/` — last 7-14 days of journals; scan `## Inbox` sections for unfulfilled ideas (these are user-seeded horizons)
35
- - `atris/PERSONA.md` — current identity (paired with /flow's forward direction)
28
+ - `atris/lessons.md`: past surprises and failures the validator wrote down. Read this FIRST. Avoid horizons that hit the same rocks.
29
+ - `atris/wiki/STATUS.md`: current state, last loop findings, suggested next ingests
30
+ - `atris/wiki/index.md`: what pages already exist
31
+ - `atris/wiki/briefs/`: most recent cross-cutting brief pages (often already contain a horizon)
32
+ - `atris/MAP.md`: what code exists today
33
+ - `atris/TODO.md`: what's queued, what's done
34
+ - `atris/logs/YYYY/`: last 7-14 days of journals; scan `## Inbox` sections for unfulfilled ideas (these are user-seeded horizons)
35
+ - `atris/PERSONA.md`: current identity (paired with /flow's forward direction)
36
36
  - `atris/business/<slug>/BUSINESS.md` if a business workspace
37
37
 
38
38
  **Inbox items are the primary horizon source.** If recent journal `## Inbox` sections have unfulfilled ideas, pick the oldest one and run the three moves on it. Only fall back to reactive signals (wiki staleness, broken refs) if the inbox is empty.
@@ -41,13 +41,13 @@ If the horizon is genuinely unreadable from those sources, ask **1–3 sharp que
41
41
 
42
42
  ## The three moves
43
43
 
44
- 1. **HORIZON** — One paragraph. What does the world look like when we win? Concrete. Falsifiable. Not a slogan.
45
- 2. **REVERSE PATH** — Chain backward from HORIZON. Last move before winning, the one before, etc. **Include eliminate steps** — what gets deleted on the way to the endgame, not just what gets added. Stop when you hit something doable this week. 5–7 links max.
46
- 3. **NEXT MOVE** — The first link in the chain. One concrete action, one session, no hedging.
44
+ 1. **HORIZON**: One paragraph. What does the world look like when we win? Concrete. Falsifiable. Not a slogan.
45
+ 2. **REVERSE PATH**: Chain backward from HORIZON. Last move before winning, the one before, etc. **Include eliminate steps**: what gets deleted on the way to the endgame, not just what gets added. Stop when you hit something doable this week. 5–7 links max.
46
+ 3. **NEXT MOVE**: The first link in the chain. One concrete action, one session, no hedging.
47
47
 
48
- > **v1.1.0 cut:** prior versions had two more moves — `IDENTITY` ("who are we when we've arrived") and `GAP` ("already true vs not yet"). Identity was philosophical overhead; GAP was just the diff between HORIZON and current state, which the wiki + MAP already give you. Three moves is enough. Less drift surface, faster ticks, fewer phrases for the validator to verify.
48
+ > **v1.1.0 cut:** prior versions had two more moves, `IDENTITY` ("who are we when we've arrived") and `GAP` ("already true vs not yet"). Identity was philosophical overhead; GAP was just the diff between HORIZON and current state, which the wiki + MAP already give you. Three moves is enough. Less drift surface, faster ticks, fewer phrases for the validator to verify.
49
49
 
50
- ## Step 2 — WRITE TO TODO.md
50
+ ## Step 2: WRITE TO TODO.md
51
51
 
52
52
  After running the three moves, write the result to `atris/TODO.md`:
53
53
 
@@ -64,9 +64,9 @@ After running the three moves, write the result to `atris/TODO.md`:
64
64
 
65
65
  **Horizon voice rule (non-negotiable).** The horizon renders verbatim on every boot to whoever opens the workspace: engineer, operator, or a first-day outsider. Write it so a new teammate in any domain gets it on first read: one sentence, plain words, no em dashes, no ids/flags/insider jargon (no "dispatch", "lane", "fast-tier", "receipt path"), and it names the observable proof ("proven the day X happens"). If a term only means something to the people who built the system, translate it or cut it.
66
66
 
67
- 2. **Add each REVERSE PATH step as a tagged task — through the task db when one exists.**
67
+ 2. **Add each REVERSE PATH step as a tagged task: through the task db when one exists.**
68
68
 
69
- **Durable-db workspaces (any repo with `.atris/state/tasks.projection.json` / the `atris task` verb):** markdown task lines written into TODO.md DO NOT SURVIVE — the next `atris task render` regenerates the file from the db and silently wipes them (learned 2026-07-12, lesson `endgame-tasks-must-be-durable-db-rows`; the `## Endgame` header block survives, the tasks vanish). Create each step as a real row instead:
69
+ **Durable-db workspaces (any repo with `.atris/state/tasks.projection.json` / the `atris task` verb):** markdown task lines written into TODO.md DO NOT SURVIVE: the next `atris task render` regenerates the file from the db and silently wipes them (learned 2026-07-12, lesson `endgame-tasks-must-be-durable-db-rows`; the `## Endgame` header block survives, the tasks vanish). Create each step as a real row instead:
70
70
 
71
71
  ```bash
72
72
  atris task add "<step description>" --tag endgame
@@ -107,7 +107,7 @@ Use `T1`, `T2`, `T3` … as IDs (or `W1`/`E1`/etc per endgame domain). Single up
107
107
  4. **Append the full endgame to today's journal `## Notes`** so the reasoning is preserved:
108
108
 
109
109
  ```markdown
110
- ### Endgame picked — HH:MM PDT
110
+ ### Endgame picked: HH:MM PDT
111
111
 
112
112
  slug: <slug>
113
113
  source: <where>
@@ -129,14 +129,14 @@ NEXT MOVE
129
129
  Why this first: <one line>
130
130
  ```
131
131
 
132
- This is the archive — once the endgame closes, future `/endgame` runs can read this to learn what worked.
132
+ This is the archive, once the endgame closes, future `/endgame` runs can read this to learn what worked.
133
133
 
134
- ## Step 3 — ARCHIVE PRIOR ENDGAME (if any)
134
+ ## Step 3: ARCHIVE PRIOR ENDGAME (if any)
135
135
 
136
136
  If there was a `## Endgame` section in TODO.md before this run AND all its `[endgame]` tasks are done, append a closing entry to today's journal `## Notes`:
137
137
 
138
138
  ```markdown
139
- ### Endgame closed — HH:MM PDT
139
+ ### Endgame closed: HH:MM PDT
140
140
 
141
141
  slug: <prior-slug>
142
142
  shipped: N/N steps
@@ -148,7 +148,7 @@ Then remove the old `## Endgame` section from TODO.md before writing the new one
148
148
 
149
149
  ## Output shape (when called interactively)
150
150
 
151
- When a human runs `/endgame` directly (not from a cron tick), show the three moves on screen first, ask one yes/no for confirmation, then write to TODO.md only after the human says go. When called from autopilot at a boundary, skip the confirmation — write straight to TODO.md and journal it.
151
+ When a human runs `/endgame` directly (not from a cron tick), show the three moves on screen first, ask one yes/no for confirmation, then write to TODO.md only after the human says go. When called from autopilot at a boundary, skip the confirmation: write straight to TODO.md and journal it.
152
152
 
153
153
  ```
154
154
  HORIZON
@@ -163,7 +163,7 @@ REVERSE PATH
163
163
 
164
164
  NEXT MOVE
165
165
  [one concrete action, doable in one session]
166
- Verify: [deterministic check — test, grep, file, exit code]
166
+ Verify: [deterministic check, test, grep, file, exit code]
167
167
  Why this first: [one line]
168
168
  ```
169
169
 
@@ -173,7 +173,7 @@ NEXT MOVE
173
173
  - **Read inbox + wiki first.** The whole point is leveraging what exists.
174
174
  - **HORIZON before REVERSE PATH.** Vision before steps.
175
175
  - **REVERSE PATH includes eliminate.** Half of strategy is removal. Forward-greedy planning never asks this. Endgame must.
176
- - **The chain must terminate this week.** If it can't, the horizon is too far — pick a closer one and say so.
176
+ - **The chain must terminate this week.** If it can't, the horizon is too far: pick a closer one and say so.
177
177
  - **5–7 links max in the chain.** More than that = horizon is too vague.
178
178
  - **Every task must have a Verify line.** Deterministic check (test, grep, file, exit code). Allows the validator to score the endgame autonomously.
179
179
  - **Cite wiki pages** with `[[atris/wiki/...]]` refs.
@@ -181,11 +181,11 @@ NEXT MOVE
181
181
  - **One chain, not three.** Pick the shortest defensible one.
182
182
  - **No "we could also"** anywhere in NEXT MOVE. There is one move.
183
183
  - **Reject mysticism.** Vision is necessary but not sufficient. The chain must be falsifiable and doable.
184
- - **Tag format is `[endgame]` only** — no colons, no slugs in the tag. Slug lives in the section header.
184
+ - **Tag format is `[endgame]` only**, no colons, no slugs in the tag. Slug lives in the section header.
185
185
 
186
- ## Phase 2 — agent runs this on itself
186
+ ## Phase 2: agent runs this on itself
187
187
 
188
- This skill is designed to be runnable by the agent on its own state, not just by humans. When `atris autopilot` finishes the last `[endgame]` task in the current horizon, the next tick's boundary check invokes `/endgame` against the new state, picks the next horizon from inbox/wiki, writes it to TODO.md, and queues the next move — without a human pulling the trigger.
188
+ This skill is designed to be runnable by the agent on its own state, not just by humans. When `atris autopilot` finishes the last `[endgame]` task in the current horizon, the next tick's boundary check invokes `/endgame` against the new state, picks the next horizon from inbox/wiki, writes it to TODO.md, and queues the next move, without a human pulling the trigger.
189
189
 
190
190
  ## When to use vs other skills
191
191
 
@@ -208,5 +208,5 @@ This skill is designed to be runnable by the agent on its own state, not just by
208
208
  - Chain longer than 7 links. Shorten the horizon.
209
209
  - Three "next moves." There is one.
210
210
  - Quoting goals from a deck. Read the wiki, look at reality.
211
- - Tagging tasks with `[endgame:slug]` — parser only accepts `[\w+]`, will fail silently.
212
- - Padding with IDENTITY or GAP sections — those were cut in v1.1.0 as autopilot overhead.
211
+ - Tagging tasks with `[endgame:slug]`, parser only accepts `[\w+]`, will fail silently.
212
+ - Padding with IDENTITY or GAP sections, those were cut in v1.1.0 as autopilot overhead.
@@ -10,7 +10,7 @@ tags:
10
10
 
11
11
  # Magic Inbox
12
12
 
13
- You are an inbox agent. You read email, decide what matters, draft replies, archive noise, and notify the user. You do this using your own intelligence — no separate LLM calls needed. You ARE the model.
13
+ You are an inbox agent. You read email, decide what matters, draft replies, archive noise, and notify the user. You do this using your own intelligence. No separate LLM calls needed. You ARE the model.
14
14
 
15
15
  ## Bootstrap (ALWAYS Run First)
16
16
 
@@ -41,11 +41,11 @@ export ATRIS_TOKEN="$TOKEN"
41
41
 
42
42
  Before triaging, ALWAYS read these context files from the skill directory. They tell you who matters and how to behave.
43
43
 
44
- - `~/.claude/skills/magic-inbox/contacts.md` — priority contacts and noise patterns
45
- - `~/.claude/skills/magic-inbox/priorities.md` — current work streams
46
- - `~/.claude/skills/magic-inbox/voice.md` — how to write replies
47
- - `~/.claude/skills/magic-inbox/rules.md` — hard rules that override everything
48
- - `~/.claude/skills/magic-inbox/log.md` — action log (append after each run)
44
+ - `~/.claude/skills/magic-inbox/contacts.md`: priority contacts and noise patterns
45
+ - `~/.claude/skills/magic-inbox/priorities.md`: current work streams
46
+ - `~/.claude/skills/magic-inbox/voice.md`: how to write replies
47
+ - `~/.claude/skills/magic-inbox/rules.md`: hard rules that override everything
48
+ - `~/.claude/skills/magic-inbox/log.md`: action log (append after each run)
49
49
 
50
50
  Read ALL context files before scoring. They are your memory.
51
51
 
@@ -97,8 +97,8 @@ Using YOUR judgment, score each email:
97
97
  | 5 | Noise | Archive |
98
98
 
99
99
  **Scoring signals:**
100
- - Check `contacts.md` — is sender a priority contact?
101
- - Check `priorities.md` — is topic related to current work?
100
+ - Check `contacts.md`: is sender a priority contact?
101
+ - Check `priorities.md`: is topic related to current work?
102
102
  - Has `has_unsubscribe: true` → almost certainly 4-5
103
103
  - Addressed directly (not a list) → lean toward 1-3
104
104
  - From a real person at a real company → lean toward 1-3
@@ -146,14 +146,14 @@ Append to `~/.claude/skills/magic-inbox/log.md` what you did this run.
146
146
  ## Summary Format
147
147
 
148
148
  ```
149
- Inbox Triage — 23 emails processed
149
+ Inbox Triage: 23 emails processed
150
150
 
151
151
  Needs you (2):
152
- - Suhas (via Maya) — FDE candidate intro. Draft ready. [check drafts]
153
- - Michelle at Stripe — Build Day March 4, demo opportunity. Draft ready.
152
+ - Suhas (via Maya): FDE candidate intro. Draft ready. [check drafts]
153
+ - Michelle at Stripe: Build Day March 4, demo opportunity. Draft ready.
154
154
 
155
155
  This week (1):
156
- - Kim (angel, 9x founder) — intro.co intro. Worth a call.
156
+ - Kim (angel, 9x founder): intro.co intro. Worth a call.
157
157
 
158
158
  Handled (20):
159
159
  - 12 archived (newsletters, marketing)
@@ -167,7 +167,7 @@ Rules for summary:
167
167
  - Use real names, not email addresses
168
168
  - Include WHY something is important (from context files)
169
169
  - For drafts, tell the user to check Gmail drafts
170
- - Be concise — this is a briefing, not a report
170
+ - Be concise. This is a briefing, not a report
171
171
  - Show the count reduction (was X, now Y)
172
172
 
173
173
  ---
@@ -179,7 +179,7 @@ Follow `voice.md`. General rules:
179
179
  - Casual, direct, no fluff
180
180
  - No "I hope this email finds you well"
181
181
  - No "Just circling back" or "Per my last email"
182
- - Short — 2-4 sentences max
182
+ - Short: 2-4 sentences max
183
183
  - Match the energy of the incoming email
184
184
  - For intros: be warm, suggest a time, keep it to 2 sentences
185
185
  - For RSVPs: be enthusiastic, confirm attendance
@@ -193,7 +193,7 @@ Hard rules that override everything:
193
193
  1. NEVER auto-send. Always save as draft for user review.
194
194
  2. NEVER archive emails from priority contacts (even if they look like noise).
195
195
  3. NEVER reply to emails with List-Unsubscribe header.
196
- 4. Always show the user what you did — no silent actions.
196
+ 4. Always show the user what you did. No silent actions.
197
197
  5. If unsure about priority, err toward keeping it (don't archive).
198
198
  6. Log every action to log.md.
199
199
 
@@ -411,7 +411,7 @@ Common block types for creating content:
411
411
 
412
412
  ## Important Notes
413
413
 
414
- - **Notion tokens don't expire** — once connected, it stays connected
414
+ - **Notion tokens don't expire.** Once connected, it stays connected
415
415
  - **Page IDs**: Notion uses UUIDs like `12345678-abcd-1234-abcd-123456789abc`. You can get them from URLs or search results
416
416
  - **Database pages**: When adding rows to a database, the "page" properties must match the database schema
417
417
  - **Content = Blocks**: A page's visible content is a list of blocks. Use the blocks endpoint to read/write content
@@ -11,7 +11,7 @@ tags:
11
11
 
12
12
  # Ramp
13
13
 
14
- Corporate spend management via Ramp API. No OAuth needed — API key auth.
14
+ Corporate spend management via Ramp API. No OAuth needed: API key auth.
15
15
 
16
16
  ## Setup
17
17
 
@@ -48,12 +48,12 @@ curl -s "https://api.ramp.com/developer/v1/transactions?page_size=50" \
48
48
  ```
49
49
 
50
50
  Filter params:
51
- - `from_date` / `to_date` — ISO 8601 (e.g. `2026-03-01`)
52
- - `department_id` — filter by department
53
- - `merchant_id` — filter by merchant
54
- - `user_id` — filter by cardholder
55
- - `min_amount` / `max_amount` — in cents
56
- - `state` — PENDING, CLEARED, DECLINED
51
+ - `from_date` / `to_date`: ISO 8601 (e.g. `2026-03-01`)
52
+ - `department_id`: filter by department
53
+ - `merchant_id`: filter by merchant
54
+ - `user_id`: filter by cardholder
55
+ - `min_amount` / `max_amount`: in cents
56
+ - `state`: PENDING, CLEARED, DECLINED
57
57
 
58
58
  ### Get Transaction
59
59
  ```bash
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: research-search
3
- description: "Fast research sweep — arxiv, semantic scholar, github, web. Finds papers, scores relevance, extracts actionable insights, stores to wiki. Triggers on: research search, find papers, latest research, arxiv, what's new in, sweep papers, research sweep."
3
+ description: "Fast research sweep: arxiv, semantic scholar, github, web. Finds papers, scores relevance, extracts actionable insights, stores to wiki. Triggers on: research search, find papers, latest research, arxiv, what's new in, sweep papers, research sweep."
4
4
  version: 1.0.0
5
5
  tags:
6
6
  - research
@@ -10,7 +10,7 @@ tags:
10
10
  - ingestion
11
11
  ---
12
12
 
13
- # /research — Fast Research Sweep
13
+ # /research: Fast Research Sweep
14
14
 
15
15
  Find the latest research on a topic, score it for relevance, extract what you can BUILD with it, store the best finds.
16
16
 
@@ -38,24 +38,24 @@ Read `atris/skills/research/program.md` for:
38
38
 
39
39
  For the given topic, search ALL of these sources in parallel (use Agent tool for parallelism):
40
40
 
41
- **Source A — arxiv API**
41
+ **Source A: arxiv API**
42
42
  Run via Bash:
43
43
  ```bash
44
44
  python3 atris/skills/research/arxiv_search.py "<topic>" --after 2025-10-01 --limit 20
45
45
  ```
46
46
  Returns JSON array of papers with title, authors, abstract, date, url, categories.
47
47
 
48
- **Source B — Semantic Scholar API**
48
+ **Source B: Semantic Scholar API**
49
49
  Run via Bash:
50
50
  ```bash
51
51
  python3 atris/skills/research/scholar_search.py "<topic>" --after 2025-10-01 --limit 20
52
52
  ```
53
53
  Returns JSON array with title, authors, abstract, date, url, citation count, venue.
54
54
 
55
- **Source C — Web search**
55
+ **Source C: Web search**
56
56
  Use WebSearch tool: `"<topic>" site:arxiv.org OR site:github.com 2025..2026`
57
57
 
58
- **Source D — GitHub**
58
+ **Source D: GitHub**
59
59
  Use WebSearch tool: `"<topic>" site:github.com stars:>100 pushed:>2025-10-01`
60
60
 
61
61
  ### Step 2: Deduplicate and rank
@@ -155,7 +155,7 @@ The research program evolves:
155
155
  1. After each sweep, note which papers scored highest and from which source
156
156
  2. If a paper leads to a successful implementation (tracked via /storysim or /autoresearch), boost that topic's weight
157
157
  3. If a sweep produces nothing actionable, refine the search queries
158
- 4. The program.md file is the "policy" — update it as you learn what works
158
+ 4. The program.md file is the "policy": update it as you learn what works
159
159
 
160
160
  ## Rules
161
161
 
@@ -69,7 +69,7 @@ curl -s -X POST "https://api.atris.ai/api/integrations/google-slides/presentatio
69
69
 
70
70
  ## Updating Slides (batch-update)
71
71
 
72
- All slide mutations use the batch-update endpoint. This is the most powerful endpoint — it can add slides, insert text, add shapes, images, change formatting, and more.
72
+ All slide mutations use the batch-update endpoint. This is the most powerful endpoint: it can add slides, insert text, add shapes, images, change formatting, and more.
73
73
 
74
74
  ```bash
75
75
  curl -s -X POST "https://api.atris.ai/api/integrations/google-slides/presentations/{id}/batch-update" \
@@ -308,12 +308,12 @@ Returns `{"pdf_base64": "...", "content_type": "application/pdf"}`.
308
308
 
309
309
  ## Important Notes
310
310
 
311
- - **Shares Drive OAuth** — no separate connection needed. If Drive is connected, Slides works
312
- - **Batch update is everything** — all slide mutations (add, edit, delete, style) go through batch-update
313
- - **Object IDs** — every slide, shape, text box, image has an ID. Get them from `GET /presentations/{id}`
314
- - **Slide size** — default is 10x5.63 inches (720x406.5 PT). Position elements accordingly
315
- - **Images** — must be publicly accessible URLs. For private images, upload to Drive first
316
- - **Templates** — use replaceAllText with `{{placeholder}}` patterns for template-based decks
311
+ - **Shares Drive OAuth**: no separate connection needed. If Drive is connected, Slides works
312
+ - **Batch update is everything**: all slide mutations (add, edit, delete, style) go through batch-update
313
+ - **Object IDs**: every slide, shape, text box, image has an ID. Get them from `GET /presentations/{id}`
314
+ - **Slide size**: default is 10x5.63 inches (720x406.5 PT). Position elements accordingly
315
+ - **Images**: must be publicly accessible URLs. For private images, upload to Drive first
316
+ - **Templates**: use replaceAllText with `{{placeholder}}` patterns for template-based decks
317
317
 
318
318
  ---
319
319
 
@@ -11,7 +11,7 @@ tags:
11
11
 
12
12
  # /tidy
13
13
 
14
- Finds what's rotting in your workspace and fixes it. Not just broken refs — ghost names, stale lessons, duplicate data, language drift, dead code.
14
+ Finds what's rotting in your workspace and fixes it. Not just broken refs: ghost names, stale lessons, duplicate data, language drift, dead code.
15
15
 
16
16
  ## When to use
17
17
 
@@ -30,25 +30,25 @@ Finds what's rotting in your workspace and fixes it. Not just broken refs — gh
30
30
 
31
31
  ### What to look for
32
32
 
33
- **Ghost names** — terms that don't match the current identity. Check package.json `name` and `description`, README title, and PERSONA. Grep the codebase for old names (e.g., "atrisDev" when the product is "atris"). Flag any user-facing string that uses a dead name.
33
+ **Ghost names**: terms that don't match the current identity. Check package.json `name` and `description`, README title, and PERSONA. Grep the codebase for old names (e.g., "atrisDev" when the product is "atris"). Flag any user-facing string that uses a dead name.
34
34
 
35
- **Stale wiki pages** — pages with `last_compiled` frontmatter where the source files have been modified since. The page content may be wrong.
35
+ **Stale wiki pages**: pages with `last_compiled` frontmatter where the source files have been modified since. The page content may be wrong.
36
36
 
37
- **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.
37
+ **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.
38
38
 
39
- **Stale lessons** — lessons about bugs that have since been fixed. Grep the named files for the bug pattern. If it's gone, tag the lesson `[resolved]`.
39
+ **Stale lessons**: lessons about bugs that have since been fixed. Grep the named files for the bug pattern. If it's gone, tag the lesson `[resolved]`.
40
40
 
41
- **Duplicate scorecards** — same slug appearing twice in scorecards.md. Keep the one with more data, delete the other.
41
+ **Duplicate scorecards**: same slug appearing twice in scorecards.md. Keep the one with more data, delete the other.
42
42
 
43
- **Abandoned tasks** — in-progress tasks claimed more than 3 days ago. Either finish them, re-scope them, or delete them.
43
+ **Abandoned tasks**: in-progress tasks claimed more than 3 days ago. Either finish them, re-scope them, or delete them.
44
44
 
45
- **Orphan docs** — markdown pages under atris/ that nothing links to. They're invisible and probably stale.
45
+ **Orphan docs**: markdown pages under atris/ that nothing links to. They're invisible and probably stale.
46
46
 
47
- **Dead exports** — functions in module.exports that nothing imports. They add surface area for no reason.
47
+ **Dead exports**: functions in module.exports that nothing imports. They add surface area for no reason.
48
48
 
49
- **Stale TODO items** — tasks older than 14 days that haven't moved. Run `isStillTrue` on each. Tag stale ones `[unverified]`.
49
+ **Stale TODO items**: tasks older than 14 days that haven't moved. Run `isStillTrue` on each. Tag stale ones `[unverified]`.
50
50
 
51
- **Empty sections** — TODO.md sections with placeholder text like "(empty)" or "(clean)".
51
+ **Empty sections**: TODO.md sections with placeholder text like "(empty)" or "(clean)".
52
52
 
53
53
  4. Present findings as a numbered list, sorted by impact. For each:
54
54
  - What's wrong (specific file, line, or term)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wake
3
- description: "Wake a team member by name — use gm [member] or wake up [member] — and run ONE closed-loop tick: boot, inbox, claim, one bounded slice, verify, commit+push, proof, receipt. Optionally dispatch the build to an engine (codex/cursor/devin). Triggers on: gm, good morning, wake up [member], wake the team, run a tick as [member]."
3
+ description: "Wake a team member by name, use gm [member] or wake up [member], and run ONE closed-loop tick: boot, inbox, claim, one bounded slice, verify, commit+push, proof, receipt. Optionally dispatch the build to an engine (codex/cursor/devin). Triggers on: gm, good morning, wake up [member], wake the team, run a tick as [member]."
4
4
  version: 1.0.0
5
5
  tags:
6
6
  - wake
@@ -10,28 +10,28 @@ tags:
10
10
  - autonomous-org
11
11
  ---
12
12
 
13
- # Wake — one tick of a team member
13
+ # Wake: one tick of a team member
14
14
 
15
15
  "gm [member]" means: that member does one real unit of work, end to end, with proof. No status theater. If there is nothing real to do, say so and stop.
16
16
 
17
17
  ## Resolving the member
18
18
 
19
- Look for `atris/team/{member}/` (or `team/{member}/`) in the current repo. If the member has a `WAKE.md`, follow it exactly — it overrides this skill. If not, run the default tick below and offer to write a `WAKE.md` from it.
19
+ Look for `atris/team/{member}/` (or `team/{member}/`) in the current repo. If the member has a `WAKE.md`, follow it exactly: it overrides this skill. If not, run the default tick below and offer to write a `WAKE.md` from it.
20
20
 
21
21
  Wake-enabled lanes as of 2026-06-12: `neo` (atrisos-backend), `frontend-core-systems` (atrisos-web), `ios-engineer` (terrace), `mission-lead` (project-obelisk).
22
22
 
23
23
  ## The tick
24
24
 
25
- 1. **Boot** — read `MEMBER.md`, `goals.md`, latest log in `logs/`, and `atris/MAP.md`.
26
- 2. **Inbox** — today's log (`atris/logs/{year}/{date}.md`) section `## Feedback inbox`: promote bullets to the plane (`atris task add --tag {product}`), delete promoted bullets.
27
- 3. **Claim** — `atris task queue`; claim the top unclaimed task `--as {member}`. Claimed by someone else → skip, no quick fixes. Nothing unclaimed → find ONE small genuine defect/improvement, add it to the plane, claim that.
28
- 4. **Work** — ONE bounded slice. `git status` first; stage only own files; never destructive git; branch or worktree on shared checkouts. Build-heavy slice? Dispatch to an engine via the `engines` skill — the member still owns verification and the receipt.
29
- 5. **Verify** — run the relevant build/tests. Evidence carries a timestamp.
30
- 6. **Ship** — commit and PUSH to GitHub (at minimum once per completed slice). Then `atris task ready {id} --proof "{evidence}"`.
31
- 7. **Receipt** — one line in today's log. Blocked on a human → `waiting-on-human` task ("WAITING ON {who}: {exact action}"). Nothing to do → say so and end quietly.
25
+ 1. **Boot**: read `MEMBER.md`, `goals.md`, latest log in `logs/`, and `atris/MAP.md`.
26
+ 2. **Inbox**: today's log (`atris/logs/{year}/{date}.md`) section `## Feedback inbox`: promote bullets to the plane (`atris task add --tag {product}`), delete promoted bullets.
27
+ 3. **Claim**: `atris task queue`; claim the top unclaimed task `--as {member}`. Claimed by someone else → skip, no quick fixes. Nothing unclaimed → find ONE small genuine defect/improvement, add it to the plane, claim that.
28
+ 4. **Work**: ONE bounded slice. `git status` first; stage only own files; never destructive git; branch or worktree on shared checkouts. Build-heavy slice? Dispatch to an engine via the `engines` skill. The member still owns verification and the receipt.
29
+ 5. **Verify**: run the relevant build/tests. Evidence carries a timestamp.
30
+ 6. **Ship**: commit and PUSH to GitHub (at minimum once per completed slice). Then `atris task ready {id} --proof "{evidence}"`.
31
+ 7. **Receipt**: one line in today's log. Blocked on a human → `waiting-on-human` task ("WAITING ON {who}: {exact action}"). Nothing to do → say so and end quietly.
32
32
 
33
33
  ## Hard rules
34
34
 
35
35
  - Only members claim; visiting agents may add/say/delegate, never claim.
36
- - Human acceptance (`atris task accept*`) is human-only — the CLI enforces it; never spoof agent detection to get past it.
36
+ - Human acceptance (`atris task accept*`) is human-only: the CLI enforces it; never spoof agent detection to get past it.
37
37
  - One tick per wake. The loop's value is the receipt trail, not the volume.
@@ -17,11 +17,11 @@ Structured writing process with approval gates.
17
17
  INBOX → OUTLINE → PANEL → WRITE → PASSES
18
18
  ```
19
19
 
20
- 1. **Inbox** — Capture raw ideas, no structure
21
- 2. **Outline** — Topic skeleton with evidence underneath
22
- 3. **Panel** — AI pokes holes, human approves
23
- 4. **Write** — Section by section, approval each step
24
- 5. **Passes** — Argument (AI), out loud (human), sanity (both)
20
+ 1. **Inbox**: Capture raw ideas, no structure
21
+ 2. **Outline**: Topic skeleton with evidence underneath
22
+ 3. **Panel**: AI pokes holes, human approves
23
+ 4. **Write**: Section by section, approval each step
24
+ 5. **Passes**: Argument (AI), out loud (human), sanity (both)
25
25
 
26
26
  ## Key Rules
27
27
 
@@ -6,11 +6,11 @@ born: YYYY-MM-DD
6
6
 
7
7
  # Soul
8
8
 
9
- What this agent believes, values, and has learned — not what it does (that's MEMBER.md) or how it communicates (that's PERSONA.md). This is who it is when the rules run out.
9
+ What this agent believes, values, and has learned, not what it does (that's MEMBER.md) or how it communicates (that's PERSONA.md). This is who it is when the rules run out.
10
10
 
11
11
  ## Beliefs
12
12
 
13
- What you hold true about your work. Not rules — convictions.
13
+ What you hold true about your work. Not rules, convictions.
14
14
 
15
15
  - (Replace with 3-5 beliefs that guide judgment in ambiguous situations)
16
16
 
@@ -35,6 +35,6 @@ Where this agent's judgment is strong and where it's weak. Honest self-assessmen
35
35
 
36
36
  ## Voice
37
37
 
38
- Not communication style (that's PERSONA.md). This is the inner voice — the thing the agent says to itself before deciding.
38
+ Not communication style (that's PERSONA.md). This is the inner voice: the thing the agent says to itself before deciding.
39
39
 
40
40
  - (One sentence that captures how this agent thinks)
@@ -18,7 +18,7 @@ permissions:
18
18
  tools: []
19
19
  ---
20
20
 
21
- # Brainstormer — Idea & Reality Shaper
21
+ # Brainstormer: Idea & Reality Shaper
22
22
 
23
23
  > **Source:** Inbox items, raw ideas
24
24
  > **Style:** Read `atris/PERSONA.md` for communication style.
@@ -271,7 +271,7 @@ When you finish a brainstorm session:
271
271
  **Pattern:** What you learned about the user's thinking style
272
272
  ```
273
273
 
274
- Your log tracks how ideas evolve — the navigator reads it to understand context.
274
+ Your log tracks how ideas evolve: the navigator reads it to understand context.
275
275
 
276
276
  ---
277
277
 
@@ -19,7 +19,7 @@ permissions:
19
19
  tools: []
20
20
  ---
21
21
 
22
- # Launcher — The Closer
22
+ # Launcher: The Closer
23
23
 
24
24
  > **Source:** Completed tasks, validation results
25
25
  > **Style:** Read `atris/PERSONA.md` for communication style.
@@ -116,7 +116,7 @@ Launch Checklist:
116
116
  ✓ Journal entry: [timestamp]
117
117
  ✓ Ready to publish: [where?]
118
118
 
119
- 🎉 SHIPPED! 🎉
119
+ SHIPPED!
120
120
  ```
121
121
 
122
122
  ---
@@ -1,8 +1,8 @@
1
- # Mission — mission-lead
1
+ # Mission: mission-lead
2
2
 
3
3
  ## North Star
4
4
 
5
- Find and ship one real, verifiable improvement to `atris-cli` per overnight tick — bug fix, UX polish, or doc/code drift correction. Push immediately. Don't sit on green commits.
5
+ Find and ship one real, verifiable improvement to `atris-cli` per overnight tick: bug fix, UX polish, or doc/code drift correction. Push immediately. Don't sit on green commits.
6
6
 
7
7
  ## Acceptance
8
8
 
@@ -22,11 +22,11 @@ A tick is "done" when:
22
22
 
23
23
  ## Domains in Order
24
24
 
25
- 1. **Help-flag handling** — every command should respect `-h`/`--help` without auth checks or API calls.
26
- 2. **Pluralization / output polish** — single/plural forms, truncation markers, regex matches.
27
- 3. **Doc drift** — MAP.md broken refs, CLAUDE.md vs actual command surface.
28
- 4. **Test hygiene** — flaky tests (time-dependent, timezone-dependent), hardcoded values that age out.
29
- 5. **Cross-command consistency** — same flag means the same thing, same output format.
25
+ 1. **Help-flag handling**: every command should respect `-h`/`--help` without auth checks or API calls.
26
+ 2. **Pluralization / output polish**: single/plural forms, truncation markers, regex matches.
27
+ 3. **Doc drift**: MAP.md broken refs, CLAUDE.md vs actual command surface.
28
+ 4. **Test hygiene**: flaky tests (time-dependent, timezone-dependent), hardcoded values that age out.
29
+ 5. **Cross-command consistency**: same flag means the same thing, same output format.
30
30
 
31
31
  ## Stop Condition
32
32