atris 3.1.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.
- package/GETTING_STARTED.md +65 -131
- package/README.md +29 -4
- package/atris/GETTING_STARTED.md +65 -131
- package/atris/PERSONA.md +5 -1
- package/atris/atris.md +122 -153
- package/atris/skills/aeo/SKILL.md +117 -0
- package/atris/skills/atris/SKILL.md +49 -25
- package/atris/skills/create-member/SKILL.md +29 -9
- package/atris/skills/endgame/SKILL.md +9 -0
- package/atris/skills/improve/SKILL.md +2 -2
- package/atris/skills/research-search/SKILL.md +167 -0
- package/atris/skills/research-search/arxiv_search.py +157 -0
- package/atris/skills/research-search/program.md +48 -0
- package/atris/skills/research-search/results.tsv +6 -0
- package/atris/skills/research-search/scholar_search.py +154 -0
- package/atris/skills/tidy/SKILL.md +36 -21
- package/atris/team/_template/MEMBER.md +2 -0
- package/atris/team/validator/MEMBER.md +35 -1
- package/atris.md +118 -178
- package/bin/atris.js +37 -6
- package/cli/__pycache__/atris_code.cpython-314.pyc +0 -0
- package/cli/__pycache__/runtime_guard.cpython-312.pyc +0 -0
- package/cli/__pycache__/runtime_guard.cpython-314.pyc +0 -0
- package/cli/atris_code.py +889 -0
- package/cli/runtime_guard.py +693 -0
- package/commands/align.js +15 -0
- package/commands/app.js +316 -0
- package/commands/autopilot.js +948 -42
- package/commands/business.js +691 -11
- package/commands/computer.js +1979 -43
- package/commands/context-sync.js +5 -0
- package/commands/experiments.js +1 -1
- package/commands/lifecycle.js +12 -0
- package/commands/plugin.js +24 -0
- package/commands/pull.js +40 -1
- package/commands/push.js +44 -0
- package/commands/release.js +183 -0
- package/commands/research.js +52 -0
- package/commands/serve.js +1 -0
- package/commands/sync.js +372 -87
- package/commands/verify.js +53 -4
- package/commands/wiki.js +71 -26
- package/lib/file-ops.js +13 -1
- package/lib/journal.js +23 -0
- package/lib/reward-config.js +24 -0
- package/lib/scorecard.js +58 -6
- package/lib/sync-telemetry.js +59 -0
- package/lib/todo.js +6 -0
- package/lib/wiki.js +235 -60
- package/package.json +4 -2
- package/utils/api.js +19 -0
- package/utils/auth.js +25 -1
- package/utils/config.js +24 -0
- package/utils/update-check.js +16 -0
package/atris/atris.md
CHANGED
|
@@ -1,221 +1,190 @@
|
|
|
1
|
-
# atris
|
|
1
|
+
# atris
|
|
2
2
|
|
|
3
|
-
|
|
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
|
-
|
|
10
|
+
On session start, before responding:
|
|
10
11
|
|
|
11
|
-
1.
|
|
12
|
-
- `atris/logs/YYYY/YYYY-MM-DD.md`
|
|
13
|
-
- `atris/MAP.md`
|
|
14
|
-
- `atris/wiki/STATUS.md`
|
|
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.
|
|
17
|
+
2. Show this box, then ask what to work on if no task was already given.
|
|
18
18
|
|
|
19
19
|
```
|
|
20
20
|
┌─────────────────────────────────────────────────────────────┐
|
|
21
|
-
│
|
|
21
|
+
│ atris [stage] │
|
|
22
22
|
├─────────────────────────────────────────────────────────────┤
|
|
23
|
-
│
|
|
24
|
-
│ • [2-3 items from Completed
|
|
23
|
+
│ recent │
|
|
24
|
+
│ • [2-3 items from Completed] │
|
|
25
25
|
├─────────────────────────────────────────────────────────────┤
|
|
26
|
-
│
|
|
27
|
-
│ ► [from In Progress
|
|
26
|
+
│ now │
|
|
27
|
+
│ ► [from In Progress] ····················· [in progress] │
|
|
28
28
|
│ [from Backlog] ····························── [next] │
|
|
29
29
|
├─────────────────────────────────────────────────────────────┤
|
|
30
|
-
│
|
|
31
|
-
│ • [from Inbox
|
|
30
|
+
│ inbox ([count]) │
|
|
31
|
+
│ • [from Inbox] │
|
|
32
32
|
└─────────────────────────────────────────────────────────────┘
|
|
33
|
-
|
|
34
|
-
Stage: PLAN → do → review (capitalize current stage)
|
|
35
33
|
```
|
|
36
34
|
|
|
37
|
-
|
|
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
|
-
##
|
|
37
|
+
## operating rules
|
|
44
38
|
|
|
45
|
-
|
|
39
|
+
You can move fast. You do not get to move blindly.
|
|
46
40
|
|
|
47
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
61
|
+
## task shape
|
|
74
62
|
|
|
75
|
-
|
|
63
|
+
Every task in `TODO.md`:
|
|
76
64
|
|
|
77
65
|
```
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
96
|
-
-
|
|
97
|
-
-
|
|
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
|
-
|
|
95
|
+
## next
|
|
107
96
|
|
|
108
|
-
|
|
97
|
+
Move one task at a time through plan → do → review.
|
|
109
98
|
|
|
110
|
-
**
|
|
111
|
-
- `
|
|
112
|
-
-
|
|
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
|
-
|
|
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
|
-
│
|
|
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
|
-
|
|
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
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
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
|
-
##
|
|
126
|
+
## journal
|
|
174
127
|
|
|
175
128
|
```
|
|
176
|
-
## Completed
|
|
177
|
-
- **C1:** Description [
|
|
129
|
+
## Completed
|
|
130
|
+
- **C1:** Description [reviewed]
|
|
178
131
|
|
|
179
|
-
## In Progress
|
|
132
|
+
## In Progress
|
|
180
133
|
- **T1:** Description
|
|
181
|
-
**Stage:**
|
|
182
|
-
**Claimed by:**
|
|
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
|
-
|
|
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
|
-
|
|
158
|
+
Do not batch. Nothing important should live only in memory.
|
|
196
159
|
|
|
197
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
*
|
|
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:
|
|
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
|
|
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
|
|
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
|
-
-
|
|
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
|
-
##
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
-
|
|
48
|
-
|
|
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
|
-
|
|
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
|
|
60
|
+
Use kebab-case for the name. Create all directories even if empty.
|
|
59
61
|
|
|
60
|
-
### Step 3: Write
|
|
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
|
|
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
|
|
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
|
|
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
|
|