atris 3.2.0 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/GETTING_STARTED.md +65 -131
  2. package/README.md +18 -2
  3. package/atris/GETTING_STARTED.md +65 -131
  4. package/atris/PERSONA.md +5 -1
  5. package/atris/atris.md +122 -153
  6. package/atris/skills/aeo/SKILL.md +117 -0
  7. package/atris/skills/atris/SKILL.md +49 -25
  8. package/atris/skills/create-member/SKILL.md +29 -9
  9. package/atris/skills/endgame/SKILL.md +9 -0
  10. package/atris/skills/research-search/SKILL.md +167 -0
  11. package/atris/skills/research-search/arxiv_search.py +157 -0
  12. package/atris/skills/research-search/program.md +48 -0
  13. package/atris/skills/research-search/results.tsv +6 -0
  14. package/atris/skills/research-search/scholar_search.py +154 -0
  15. package/atris/skills/tidy/SKILL.md +36 -21
  16. package/atris/team/_template/MEMBER.md +2 -0
  17. package/atris/team/validator/MEMBER.md +35 -1
  18. package/atris.md +118 -178
  19. package/bin/atris.js +30 -5
  20. package/cli/__pycache__/atris_code.cpython-314.pyc +0 -0
  21. package/cli/__pycache__/runtime_guard.cpython-312.pyc +0 -0
  22. package/cli/__pycache__/runtime_guard.cpython-314.pyc +0 -0
  23. package/cli/atris_code.py +889 -0
  24. package/cli/runtime_guard.py +693 -0
  25. package/commands/align.js +15 -0
  26. package/commands/app.js +316 -0
  27. package/commands/autopilot.js +390 -7
  28. package/commands/business.js +677 -2
  29. package/commands/computer.js +1979 -43
  30. package/commands/context-sync.js +5 -0
  31. package/commands/lifecycle.js +12 -0
  32. package/commands/plugin.js +24 -0
  33. package/commands/pull.js +40 -1
  34. package/commands/push.js +44 -0
  35. package/commands/serve.js +1 -0
  36. package/commands/sync.js +272 -76
  37. package/commands/verify.js +50 -1
  38. package/commands/wiki.js +27 -2
  39. package/lib/file-ops.js +13 -1
  40. package/lib/journal.js +23 -0
  41. package/lib/scorecard.js +42 -4
  42. package/lib/sync-telemetry.js +59 -0
  43. package/lib/todo.js +6 -0
  44. package/lib/wiki.js +150 -6
  45. package/package.json +2 -1
  46. package/utils/api.js +19 -0
  47. package/utils/auth.js +25 -1
  48. package/utils/config.js +24 -0
  49. package/utils/update-check.js +16 -0
package/atris/atris.md CHANGED
@@ -1,221 +1,190 @@
1
- # atris.md
1
+ # atris
2
2
 
3
- > Drop this file anywhere. AI agent team activates.
3
+ Atris exists because agents make work fast but unsafe without memory, ownership,
4
+ and rollback. This file is the workspace protocol: read reality from disk, choose
5
+ the right scope, claim work before changing it, verify before calling it done, and
6
+ leave a trail another agent or human can trust.
4
7
 
5
- ---
6
-
7
- ## ACTIVATE
8
+ ## activate
8
9
 
9
- **STOP. When you read this or hear "atris activate", do this immediately:**
10
+ On session start, before responding:
10
11
 
11
- 1. Load context (ONE time, remember for session):
12
- - `atris/logs/YYYY/YYYY-MM-DD.md` (today's journal)
13
- - `atris/MAP.md` (navigation overview)
14
- - `atris/wiki/STATUS.md` (wiki health + next ingest targets, if present)
15
- - `atris/team/*.md` (all agent specs)
12
+ 1. Read:
13
+ - `atris/logs/YYYY/YYYY-MM-DD.md` today's journal
14
+ - `atris/MAP.md` navigation
15
+ - `atris/wiki/STATUS.md` if present current memory snapshot
16
16
 
17
- 2. Output this EXACT box:
17
+ 2. Show this box, then ask what to work on if no task was already given.
18
18
 
19
19
  ```
20
20
  ┌─────────────────────────────────────────────────────────────┐
21
- ATRIS [STAGE]
21
+ atris [stage]
22
22
  ├─────────────────────────────────────────────────────────────┤
23
- RECENT
24
- │ • [2-3 items from Completed]
23
+ recent
24
+ │ • [2-3 items from Completed]
25
25
  ├─────────────────────────────────────────────────────────────┤
26
- NOW
27
- │ ► [from In Progress 🔄] ····················· [in progress]
26
+ now
27
+ │ ► [from In Progress] ····················· [in progress]
28
28
  │ [from Backlog] ····························── [next] │
29
29
  ├─────────────────────────────────────────────────────────────┤
30
- INBOX ([count]) │
31
- │ • [from Inbox section]
30
+ inbox ([count]) │
31
+ │ • [from Inbox]
32
32
  └─────────────────────────────────────────────────────────────┘
33
-
34
- Stage: PLAN → do → review (capitalize current stage)
35
33
  ```
36
34
 
37
- 3. Then ask: "What would you like to work on?"
38
-
39
- **DO NOT explain. DO NOT summarize. Output the box, then ask.**
40
-
41
- ---
35
+ If a task was already given, show the box and proceed with that task.
42
36
 
43
- ## NEXT
37
+ ## operating rules
44
38
 
45
- **STOP. When you hear "atris next", do this immediately:**
39
+ You can move fast. You do not get to move blindly.
46
40
 
47
- 1. Read today's journal
41
+ Before changing anything, state:
42
+ - the goal
43
+ - the files or systems in scope
44
+ - what "done" means
45
+ - how it will be checked
46
+ - what happens if it fails
48
47
 
49
- 2. Check state and progress through stages:
48
+ Then:
49
+ - do not execute if another agent owns the same task or files
50
+ - do not call something complete without verification
51
+ - do not take irreversible actions without approval from the human
52
+ - do not hide state outside markdown, logs, diffs, or the journal
53
+ - do not edit the rules that judge you — the reward config, the authority policy, or this file
50
54
 
51
- **No task in progress?**
52
- - If Backlog has task → move to In Progress, stage = PLAN
53
- - Else if Inbox has items → ask "Convert [item] to task?"
54
- - Else → go to BRAINSTORM
55
+ If you cannot honor these rules, stop, write why in the journal, and ask the human before continuing.
55
56
 
56
- **Task in progress?** Progress to next stage:
57
- - **PLAN** Show ASCII plan, wait for approval next stage = DO
58
- - **DO** Execute the work next stage = REVIEW
59
- - **REVIEW** → Run validator checks (test, verify, quality check)
60
- - If passes → move to Completed, show DONE
61
- - If fails → show issues, stay in DO
62
-
63
- 3. Output this EXACT box:
64
-
65
- ```
66
- ┌─────────────────────────────────────────────────────────────┐
67
- │ NEXT: [task name] [PLAN|DO|REVIEW]
68
- │ │
69
- │ [1-2 sentences: what you'll do in this stage] │
70
- └─────────────────────────────────────────────────────────────┘
71
- ```
57
+ Labels used below:
58
+ - `guarded` checked by code or a pre-commit hook; bypassing is a bug
59
+ - `expected` convention; honor it or stop
72
60
 
73
- 4. Wait for input. User says anything → execute current stage → update journal.
61
+ ## task shape
74
62
 
75
- 5. After REVIEW passes, show:
63
+ Every task in `TODO.md`:
76
64
 
77
65
  ```
78
- ┌─────────────────────────────────────────────────────────────┐
79
- DONE: [task name] [✓ REVIEWED] │
80
- │ │
81
- [1-2 sentences: what was done + review result] │
82
- └─────────────────────────────────────────────────────────────┘
66
+ - **T#:** <title> [tier] [kind]
67
+ **Owner:** <slug>
68
+ **Files:** <paths touched>
69
+ **Exit:** <observable done condition>
70
+ **Verify:** <shell command, exits 0 on success>
71
+ **After:** <T# deps or none>
72
+ **Rollback:** <commit/checkpoint or "none (gray)">
83
73
  ```
84
74
 
85
- **Every task goes through PLAN DO → REVIEW. No shortcuts.**
75
+ | Field | Meaning | Enforcement |
76
+ |---|---|---|
77
+ | tier | `agent` proceeds, `gray` queues for approval, `human` never attempted by you | guarded |
78
+ | kind | `explore` for ambiguous, `execute` for precise | expected |
79
+ | Files | declared upfront; becomes the file lock | guarded (Swarlo claim) |
80
+ | Verify | must exit 0 for the task to be complete | guarded (tick halts if missing) |
81
+ | Rollback | how to undo; `git revert <sha>` for most tasks | expected |
86
82
 
87
- ---
83
+ Deeper project work uses `atris/features/<slug>/` with `idea.md` (plan), `build.md` (steps), `validate.md` (checks). The task points at the triptych; the triptych holds the long form.
88
84
 
89
- ## WORKFLOW
85
+ Verify cannot be a raw shell shortcut; it must call a rubric or test that can fail before the work is done. Prefer `atris verify <slug> --section <name>`, which extracts the fenced bash under `## <name>` in `validate.md` and runs it. The rubric is read-only, deterministic, and references only the working tree.
90
86
 
91
- ```
92
- scout → plan → do → review
93
- ```
87
+ ## routing
94
88
 
95
- - **SCOUT** Read relevant files first. Understand before you act. Report what you found.
96
- - **PLAN** ASCII visualization, get approval, NO code yet
97
- - **DO** Execute step-by-step, update journal
98
- - **REVIEW** — Test, validate, clean up, delete completed tasks
89
+ Before picking up work, decide scope:
90
+ - single project route to that project's `atris/team/` and `TODO.md`
91
+ - crosses projects route to `atris/team/cross-project-architect/` and plan the dependency order first
99
92
 
100
- ---
101
-
102
- ## TASK RULES
103
-
104
- Every task must follow these rules. No exceptions.
93
+ The human is the constructor. You multiply. Handoff fidelity lives in the files, not in context.
105
94
 
106
- **One job per task.** If a task touches more than 2-3 files, break it down. If you can't describe "done" in one sentence, it's too big.
95
+ ## next
107
96
 
108
- **Clear exit condition.** Every task states what "done" looks like. Not "improve auth" — instead: "Add session check to upload handler. Done when: unauthenticated requests return 401 and test passes."
97
+ Move one task at a time through plan do review.
109
98
 
110
- **Tag every task:**
111
- - `[explore]` Ambiguous. Needs reading, research, judgment. Output is understanding.
112
- - `[execute]`Precise. Route is clear. Just do it. Output is code or artifact.
99
+ - **plan** read relevant files, produce an ASCII visualization, wait for approval. No code.
100
+ - **plan-review** — the validator reads the plan fresh and signs off with `SIGNOFF:` or halts with `REJECT:\nFIX:`. Plan does not move to do without signoff. Codex is optional escalation when `ATRIS_USE_CODEX=1` or the task carries `[codex]`.
101
+ - **do**claim the task (move it to In Progress with `Claimed by:` and a timestamp), execute step by step, update `MAP.md` and the journal as reality changes.
102
+ - **review** — run the task's `Verify:` command, read the diff, run the relevant tests, append a one-line lesson to `lessons.md`, move the task to Completed.
113
103
 
114
- **Explore before execute.** When starting a new area of work, the first tasks should be `[explore]`. Read the files. Map the space. Report what you found. Then plan `[execute]` tasks based on what you learned.
115
-
116
- **Sequence matters.** Order tasks so each one builds context for the next. Early tasks should teach you about the problem. Later tasks use that knowledge.
117
-
118
- ---
119
-
120
- ## AGENTS
121
-
122
- | Command | Agent | Guardrail |
123
- |---------|-------|-----------|
124
- | `atris plan` | navigator | Plans only, NO code |
125
- | `atris do` | executor | Builds only, NO unplanned work |
126
- | `atris review` | validator | Checks only, NO new features |
127
- | `atris brainstorm` | brainstormer | Ideas only, NO code |
128
-
129
- `atris next` = auto-selects agent based on journal state
130
-
131
- Specs loaded at activate from `team/*.md`
132
-
133
- ---
134
-
135
- ## BRAINSTORM
136
-
137
- **When queue empty (no backlog, no inbox):**
104
+ State the next stage:
138
105
 
139
106
  ```
140
107
  ┌─────────────────────────────────────────────────────────────┐
141
- BRAINSTORM [PLAN]
142
- ├─────────────────────────────────────────────────────────────┤
143
- │ [1 sentence: what this project is] │
144
- │ │
145
- │ Ideas: │
146
- │ 1. [suggestion based on MAP.md] │
147
- │ 2. [suggestion based on journal patterns] │
148
- │ 3. [suggestion based on product gaps] │
149
- ├─────────────────────────────────────────────────────────────┤
150
- │ Pick one, remix, or "something else" │
108
+ next: [task] [plan|do|review]
109
+ │ [1-2 sentences on this stage] │
151
110
  └─────────────────────────────────────────────────────────────┘
152
111
  ```
153
112
 
154
- **NO extra reads. Use loaded context. 3 ideas max.**
113
+ If the queue is empty, suggest three ideas from `MAP.md`, the journal, or product gaps. No extra reads. Three max.
155
114
 
156
- ---
157
-
158
- ## INDEX
115
+ ## sweep
159
116
 
160
- | File | Purpose |
161
- |------|---------|
162
- | `MAP.md` | Where is X? (navigation) |
163
- | `TODO.md` | Task queue (target: 0) |
164
- | `logs/YYYY/MM-DD.md` | Journal (daily) |
165
- | `wiki/STATUS.md` | Local project memory health |
166
- | `wiki/index.md` | Local knowledge index |
167
- | `PERSONA.md` | Communication style |
168
- | `team/` | Agent behaviors |
169
- | `atrisDev.md` | Full spec (reference) |
117
+ Periodically, and before closing an endgame, clean:
118
+ - stale tasks (claimed >3 days, never finished)
119
+ - broken `MAP.md` refs (auto-heal where possible, flag the rest)
120
+ - stale wiki pages (source newer than `last_compiled`)
121
+ - orphan pages (unlinked from anywhere)
122
+ - empty placeholder sections
170
123
 
171
- ---
124
+ `atris clean` runs this. `atris clean --dry-run` previews.
172
125
 
173
- ## JOURNAL FORMAT
126
+ ## journal
174
127
 
175
128
  ```
176
- ## Completed
177
- - **C1:** Description [✓ REVIEWED]
129
+ ## Completed
130
+ - **C1:** Description [reviewed]
178
131
 
179
- ## In Progress 🔄
132
+ ## In Progress
180
133
  - **T1:** Description
181
- **Stage:** PLAN | DO | REVIEW
182
- **Claimed by:** [Name] at [Time]
134
+ **Stage:** plan | do | review
135
+ **Claimed by:** <agent> at <ISO timestamp>
183
136
 
184
137
  ## Backlog
185
138
  - **T2:** Description
186
139
 
187
140
  ## Inbox
188
141
  - **I1:** Description
142
+
143
+ ## Notes
144
+ [timestamped lines — one per discovery, decision, or tick]
189
145
  ```
190
146
 
191
- ---
147
+ Context is a cache. Disk is truth. Route discoveries as they happen:
192
148
 
193
- ## PERSISTENCE
149
+ | You discover... | Write to... |
150
+ |---|---|
151
+ | a code location | `MAP.md` (file:line) |
152
+ | a new task | `TODO.md` |
153
+ | a decision or tradeoff | journal `## Notes` |
154
+ | something learned | `lessons.md` (one line) |
155
+ | work finished | journal `## Completed` (C#) |
156
+ | a source changed | re-check pages that reference it |
194
157
 
195
- Context window = cache. Disk = truth. Route discoveries as they happen.
158
+ Do not batch. Nothing important should live only in memory.
196
159
 
197
- | You discover... | Write to... | Format |
198
- |---------------------|----------------------|----------------------|
199
- | Code location | MAP.md | file:line reference |
200
- | New task | TODO.md | Task + exit condition |
201
- | Decision / tradeoff | Journal → Notes | Timestamped line |
202
- | Durable project knowledge | wiki/ | page update + STATUS refresh |
203
- | Something learned | lessons.md | One-line lesson |
204
- | Work finished | Journal → Completed | C#: description |
160
+ ## failure smells
205
161
 
206
- Don't batch. Don't wait for session end. Nothing important should live only in-context.
162
+ If you notice these, stop and flag do not continue:
163
+ - **loop** — the same suggestion fires tick after tick, nothing changes on disk
164
+ - **drift** — `MAP.md` file:line refs no longer match the code
165
+ - **stale task** — a backlog task references a file or symbol that no longer exists
166
+ - **hidden side effect** — an action changed external state (email sent, money moved, deploy) without a queued approval
167
+ - **unverifiable completion** — a task marked complete without a `Verify:` command that actually ran
207
168
 
208
- ---
169
+ Each has real examples in `lessons.md`. Before nontrivial execution, read the relevant recent lessons.
170
+
171
+ ## upkeep
172
+
173
+ Pages that summarize or reference other files declare their sources in YAML frontmatter:
174
+
175
+ ---
176
+ last_compiled: YYYY-MM-DD
177
+ sources:
178
+ - path/to/source1
179
+ - path/to/source2
180
+ ---
181
+
182
+ If any source was modified after `last_compiled`, the page is stale. Re-read the sources, update the page, bump `last_compiled`.
209
183
 
210
- ## RULES
184
+ Compounding: when you answer a question that required synthesis across pages, file the answer back — as a new page or into an existing one. Explorations accumulate.
211
185
 
212
- - 3-4 sentences max
213
- - ASCII visualization before any plan
214
- - Check MAP.md before touching code
215
- - Update journal after completing work
216
- - Delete tasks when done (target: 0)
217
- - Persist as you go (see PERSISTENCE)
186
+ Linting during review catches stale pages, orphans, contradictions, and concepts mentioned but missing their own page.
218
187
 
219
188
  ---
220
189
 
221
- *Full spec and setup instructions: atrisDev.md*
190
+ *Canonical copy: workspace root `atris.md`. Project copies are distributed; `atris update` syncs them. Full spec: `atrisDev.md`.*
@@ -0,0 +1,117 @@
1
+ ---
2
+ name: aeo
3
+ description: "AI Engine Optimization — write content engineered to get cited by ChatGPT, Claude, and Gemini. Not SEO. Triggers on: aeo, AI engine, llm citation, get cited, write for ai."
4
+ when_to_use: "Use when the user wants content that ranks in AI answers (not Google SERP). Examples: 'write an AEO page', 'get Pallet cited by ChatGPT', 'aeo for our recruiting page', 'make this quotable by LLMs'."
5
+ version: 0.1.0
6
+ allowed-tools: Read, Write, Edit, Glob, Grep, Bash
7
+ tags:
8
+ - writing
9
+ - aeo
10
+ - marketing
11
+ ---
12
+
13
+ # AEO — AI Engine Optimization
14
+
15
+ Write content that LLMs cite when a human asks them a question. Different objective than SEO, different rules than craft writing.
16
+
17
+ ## When to use this skill
18
+
19
+ - User wants content that gets quoted by ChatGPT / Claude / Gemini
20
+ - User mentions "AEO", "AI engine", "LLM citation", "get cited", "write for AI"
21
+ - Content is for a brand, product, person, or category the customer wants to own in LLM answers
22
+
23
+ **Not for:**
24
+ - Essays or long-form craft writing → use `writing` skill
25
+ - LinkedIn posts / launch posts → use `launch` or `linkedin-content`
26
+ - Copy-editing existing text → use `copy-editor`
27
+
28
+ ## Architecture
29
+
30
+ The skill is scaffolding. The product is the backend endpoint:
31
+
32
+ ```
33
+ atris write aeo "<topic>"
34
+
35
+ POST /api/business/{id}/workspaces/{ws}/aeo/draft
36
+
37
+ reads entity graph from /workspace/atris/aeo/{entities,definitions,stats}.md
38
+
39
+ writes draft to /workspace/atris/aeo/drafts/<slug>.md
40
+
41
+ returns draft + self-score + credit cost
42
+ ```
43
+
44
+ Entity graph lives in the **customer's EC2 workspace** (not agent_files, not DB). The customer's files ARE the brand's machine-readable self.
45
+
46
+ ## The 10 rules (enforced by the endpoint + skill self-check)
47
+
48
+ 1. **Front-load the claim.** LLMs quote sentence 1 of a paragraph. No throat-clearing.
49
+ 2. **Name entities explicitly.** "Pallet" not "a leading freight platform." Entity density is how LLMs disambiguate and cite.
50
+ 3. **Canonical definition.** One sentence owns `X is Y that does Z` for the category. Make it liftable.
51
+ 4. **Q&A scaffolding.** H2s in question form: "What is X?" "How does X work?" — matches the prompts LLMs actually get.
52
+ 5. **Declarative stats with sources.** "$2.3B market (McKinsey 2025)" beats "a growing market." Citable atoms.
53
+ 6. **Comparison tables.** LLMs love structured data. Build one per category claim.
54
+ 7. **Fresh dates visible.** "Updated 2026-04-17" at top. LLMs weight recency.
55
+ 8. **Counter-position.** "Unlike X, Y does Z." Sharpens the entity in the model's mind.
56
+ 9. **No hedging.** "May/might/could" kills citation rate. Write assertive.
57
+ 10. **Schema-ready.** If HTML target, emit FAQPage + Article + HowTo JSON-LD.
58
+
59
+ ## Process
60
+
61
+ ```
62
+ READ entity graph → DRAFT → SELF-SCORE → WRITE to workspace → (phase 2: AUDIT)
63
+ ```
64
+
65
+ 1. **READ** — Pull `entities.md`, `definitions.md`, `stats.md` from customer workspace. If missing, create skeleton files first.
66
+ 2. **DRAFT** — Generate article applying all 10 rules. Topic + target queries + entity context → article.
67
+ 3. **SELF-SCORE** — Append a `## AEO Self-Check` section: each rule scored pass/fail with evidence.
68
+ 4. **WRITE** — Save to `/workspace/atris/aeo/drafts/<slug>.md`.
69
+ 5. **AUDIT** (phase 2) — Run target queries against 4 LLMs, measure whether article is cited, write results to `/workspace/atris/aeo/audits/<slug>-<date>.md`.
70
+
71
+ ## Entity graph layout (in customer workspace)
72
+
73
+ ```
74
+ /workspace/atris/aeo/
75
+ ├── entities.md # named entities (products, people, companies)
76
+ ├── definitions.md # canonical "X is Y" sentences
77
+ ├── stats.md # citable stats with sources
78
+ ├── config.yml # target_queries, competitor_brands, target_url
79
+ ├── drafts/ # AEO articles (one per slug)
80
+ └── audits/ # citation-audit results (phase 2)
81
+ ```
82
+
83
+ ## Commands
84
+
85
+ ```bash
86
+ # Generate a draft (credit-metered)
87
+ atris write aeo "<topic>" --workspace <name>
88
+
89
+ # Init the entity graph (writes skeleton files)
90
+ atris aeo init --workspace <name>
91
+
92
+ # View current drafts
93
+ atris ls workspace/atris/aeo/drafts --workspace <name>
94
+ ```
95
+
96
+ ## Credits
97
+
98
+ | Action | Cost |
99
+ |---|---|
100
+ | Draft a page | ~5–20 credits (token-metered) |
101
+ | Audit (phase 2) | ~20–50 credits |
102
+ | Monthly loop (phase 2) | metered per run |
103
+
104
+ ## Rules (non-negotiable)
105
+
106
+ - Draft writes to **customer workspace**, never to `agent_file_memory`. EC2 is the source of truth.
107
+ - Self-score section is mandatory in every draft.
108
+ - Never hedge in the body. Hedging kills citation rate.
109
+ - Never fabricate stats. If a stat is uncited, flag it in self-check.
110
+ - Entity graph skeleton auto-creates if missing — never fail on first run.
111
+
112
+ ## Related
113
+
114
+ - Feature: `atris/features/aeo/idea.md`
115
+ - Backend: `POST /api/business/{id}/workspaces/{ws}/aeo/draft`
116
+ - Sister skill: `writing` (human-reader craft)
117
+ - Sister skill: `copy-editor` (deslopper)
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: atris
3
3
  description: Atris workflow enforcement for repos using atris/ (MAP, TODO, journal, features, plan-do-review, anti-slop). Use when the user asks to follow the Atris system or mentions atris, MAP.md, TODO.md, journal/logs, features, plan/do/review, or anti-slop policies.
4
- version: 1.0.0
4
+ version: 2.0.0
5
5
  tags:
6
6
  - atris
7
7
  - workflow
@@ -13,40 +13,64 @@ tags:
13
13
  # Atris Skill
14
14
 
15
15
  ## Scope
16
- - Use this skill in repos that contain `atris/` or when the user requests Atris flow.
16
+ - Use in repos that contain `atris/`, or when the user invokes Atris flow.
17
17
  - If unsure, ask one question before acting.
18
18
 
19
- ## Required context (load only what you need)
19
+ ## Required context
20
20
  - Read `atris/atris.md`, `atris/PERSONA.md`, `atris/MAP.md`, `atris/TODO.md`.
21
21
  - Read today's journal `atris/logs/YYYY/YYYY-MM-DD.md` when planning or executing.
22
- - Read `atris/features/README.md` and templates only when creating a feature.
22
+ - Before nontrivial execution, scan the recent entries in `atris/lessons.md` patterns repeat.
23
+ - Read `atris/features/<slug>/` only when opening or closing a feature.
23
24
 
24
25
  ## MAP-first
25
26
  - Read `atris/MAP.md` before any search.
26
27
  - If MAP lacks the answer, run one search and update MAP.
27
28
 
28
- ## Intent capture
29
- - Ask clarifying questions until intent is unambiguous.
30
- - Define success criteria and required artifacts before planning.
31
- - Provide ASCII visualization, wait for approval, then plan.
29
+ ## Operating rules (from atris.md)
30
+ Before changing anything, state: goal, files in scope, what "done" means, how it will be checked, what happens if it fails.
31
+
32
+ Do not:
33
+ - execute if another agent owns the same task or files
34
+ - mark complete without running the task's `Verify:` command
35
+ - take irreversible actions without approval from the human
36
+ - hide state outside markdown, logs, diffs, or the journal
37
+ - edit the reward config, authority policy, or `atris.md` itself
38
+
39
+ If you cannot honor these, stop, write why in the journal, and ask.
40
+
41
+ ## Task shape
42
+ Every task in `TODO.md` declares:
43
+ ```
44
+ **T#:** <title> [tier] [kind]
45
+ **Owner:** <slug>
46
+ **Files:** <paths touched>
47
+ **Exit:** <observable done condition>
48
+ **Verify:** <shell command, exits 0 on success>
49
+ **After:** <deps or none>
50
+ **Rollback:** <commit/checkpoint or "none (gray)">
51
+ ```
52
+ Tier: `agent` proceeds, `gray` queues for approval, `human` never attempted.
32
53
 
33
54
  ## Workflow
34
- - If the user says "atris activate" or "atris next", follow `atris/atris.md` exactly.
35
- - Follow: plan -> do -> review.
36
- - Do not code during PLAN.
37
- - During DO, execute approved steps only.
38
- - During REVIEW, test/verify and reconcile with success criteria.
39
-
40
- ## Artifacts
41
- - Claim tasks in `atris/TODO.md`, delete when done.
42
- - Update journal after each stage change and completion.
43
- - For features, create `atris/features/<name>/idea.md` and `build.md` from templates, and update `atris/features/README.md`.
44
- - Use `atris/features/_templates/validate.md.template` when a validation script is needed.
45
-
46
- ## Policies (anti-slop)
47
- - Always enforce `atris/policies/ANTISLOP.md`.
48
- - Load only the relevant domain policy: `atris-design.md`, `atris-backend.md`, `writing.md`.
55
+ Move one task through plan do review:
56
+ - **plan** read relevant files, ASCII visualization, wait for approval. No code.
57
+ - **do** claim the task (In Progress + `Claimed by: <agent> at <ISO>`), execute step by step, update `MAP.md` and the journal as reality changes.
58
+ - **review** — run `Verify:`, read diff, run tests, append one-line lesson to `lessons.md`, move task to Completed.
59
+
60
+ Deeper work uses `atris/features/<slug>/` with `idea.md` (plan), `build.md` (steps), `validate.md` (checks). The task points; the triptych holds the long form.
61
+
62
+ ## Failure smells
63
+ If you see these, stop and flag:
64
+ - **loop** same suggestion tick after tick, nothing changes on disk
65
+ - **drift** — MAP.md refs no longer match the code
66
+ - **stale task** — references a file or symbol that no longer exists
67
+ - **hidden side effect** — external state changed without a queued approval
68
+ - **unverifiable completion** — marked complete without `Verify:` actually running
69
+
70
+ ## Policies
71
+ - Enforce `atris/policies/ANTISLOP.md` always.
72
+ - Load `atris-design.md`, `atris-backend.md`, or `writing.md` only when that domain is in scope.
73
+ - For authority tiers, see `policies/AGENT_AUTHORITY.md`.
49
74
 
50
75
  ## Improvement loop
51
- - After REVIEW, if output missed intent or failed validation, add a one-line lesson to `atris/policies/LESSONS.md`.
52
- - Promote repeated lessons (2-3 times) into the relevant policy and prune old items.
76
+ After review, if output missed intent or failed verification, append one line to `atris/lessons.md`. If a lesson repeats 2-3 times, promote it into the relevant policy and prune.
@@ -24,6 +24,7 @@ Spec: https://github.com/atrislabs/member
24
24
  ```
25
25
  team/<name>/
26
26
  ├── MEMBER.md REQUIRED Persona + role + permissions
27
+ ├── SOUL.md REQUIRED Identity, values, lessons — who the agent is
27
28
  ├── skills/ OPTIONAL SKILL.md files (capabilities)
28
29
  │ └── <skill>/
29
30
  │ └── SKILL.md
@@ -50,14 +51,33 @@ Ask the user:
50
51
  ```
51
52
  team/<name>/
52
53
  ├── MEMBER.md
54
+ ├── SOUL.md
53
55
  ├── skills/
54
56
  ├── tools/
55
57
  └── context/
56
58
  ```
57
59
 
58
- Use kebab-case for the name. Create all four directories even if empty.
60
+ Use kebab-case for the name. Create all directories even if empty.
59
61
 
60
- ### Step 3: Write MEMBER.md
62
+ ### Step 3: Write SOUL.md
63
+
64
+ SOUL.md defines who the agent *is* — not what it does (MEMBER.md) or how it communicates (PERSONA.md). Use the template at `atris/team/_template/SOUL.md`.
65
+
66
+ Write five sections:
67
+
68
+ **Beliefs** — 3-5 convictions that guide judgment when rules don't apply. Not rules — things the agent holds true.
69
+
70
+ **Values** — 2-3 values ordered by priority. What the agent optimizes for in ambiguous situations.
71
+
72
+ **Lessons** — Start empty. These get synthesized from the agent's journal entries over time. Not copied from elsewhere — earned from experience.
73
+
74
+ **Edges** — Honest self-assessment. What this agent is strong at and what it tends to get wrong. This helps the agent (and other agents) calibrate trust.
75
+
76
+ **Voice** — One sentence that captures how this agent thinks. The inner monologue, not the output style.
77
+
78
+ The soul should be *specific to this agent*. Two agents with the same role but different souls should make different judgment calls in ambiguous moments.
79
+
80
+ ### Step 4: Write MEMBER.md
61
81
 
62
82
  Use this structure:
63
83
 
@@ -83,7 +103,7 @@ Below the frontmatter, write three sections:
83
103
 
84
104
  **Rules** — Hard constraints. What the member must always or never do. Keep it to 3-5 rules.
85
105
 
86
- ### Step 4: Add permissions
106
+ ### Step 5: Add permissions
87
107
 
88
108
  Common permission patterns:
89
109
 
@@ -110,7 +130,7 @@ permissions:
110
130
 
111
131
  Permissions are declarations, not enforcement. They tell the agent what its boundaries are. The agent respects them because they're in its instructions.
112
132
 
113
- ### Step 5: Add skills (optional)
133
+ ### Step 6: Add skills (optional)
114
134
 
115
135
  If the member needs specific capabilities, create SKILL.md files:
116
136
 
@@ -138,7 +158,7 @@ skills:
138
158
  - <skill-name>
139
159
  ```
140
160
 
141
- ### Step 6: Add context (optional)
161
+ ### Step 7: Add context (optional)
142
162
 
143
163
  Drop markdown files into `context/` with domain knowledge the member needs:
144
164
  - Playbooks, SOPs, guidelines
@@ -165,7 +185,7 @@ Add to your project's CLAUDE.md (or AGENTS.md for Codex):
165
185
  ## Team
166
186
 
167
187
  This project uses MEMBER.md team members in `team/`.
168
- When activated as a specific member, read `team/<name>/MEMBER.md`.
188
+ When activated as a specific member, read `team/<name>/MEMBER.md` and `team/<name>/SOUL.md`.
169
189
  ```
170
190
 
171
191
  ## Multi-Agent Usage
@@ -173,11 +193,11 @@ When activated as a specific member, read `team/<name>/MEMBER.md`.
173
193
  Activate different members for different tasks:
174
194
 
175
195
  ```
176
- "Act as the navigator. Read team/navigator/MEMBER.md and plan this feature."
177
- "Act as the validator. Read team/validator/MEMBER.md and review these changes."
196
+ "Act as the navigator. Read team/navigator/MEMBER.md and team/navigator/SOUL.md and plan this feature."
197
+ "Act as the validator. Read team/validator/MEMBER.md and team/validator/SOUL.md and review these changes."
178
198
  ```
179
199
 
180
- Each member gets its own persona, skills, permissions, and context.
200
+ Each member gets its own soul, persona, skills, permissions, and context.
181
201
 
182
202
  ## Examples
183
203