atris 3.53.0 → 3.56.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/FOR_AGENTS.md +7 -0
- package/README.md +1 -1
- package/atris/policies/ANTISLOP.md +2 -1
- package/atris/skills/copy-editor/SKILL.md +2 -1
- package/atris/skills/design/SKILL.md +1 -1
- package/atris/skills/x-search/SKILL.md +24 -22
- package/atris/skills/youtube/SKILL.md +82 -33
- package/atris/team/_template/SOUL.md +40 -0
- package/atris/team/validator/MEMBER.md +1 -2
- package/bin/atris +21 -0
- package/bin/atris.js +563 -373
- package/commands/api-key.js +170 -0
- package/commands/auth.js +453 -43
- package/commands/autoland.js +3 -1
- package/commands/autopilot-front.js +58 -11
- package/commands/avail.js +5 -4
- package/commands/balance.js +55 -0
- package/commands/bench.js +29 -1
- package/commands/brain.js +63 -12
- package/commands/brainstorm.js +18 -0
- package/commands/business.js +149 -1
- package/commands/chat-scan.js +17 -4
- package/commands/close.js +5 -1
- package/commands/doctor.js +174 -0
- package/commands/dream.js +7 -0
- package/commands/drill.js +34 -2
- package/commands/engine.js +47 -35
- package/commands/errors.js +58 -8
- package/commands/experiments.js +14 -0
- package/commands/feedback.js +61 -2
- package/commands/fleet-report.js +27 -7
- package/commands/fleet.js +98 -11
- package/commands/founder.js +60 -21
- package/commands/human-missions.js +79 -4
- package/commands/improve.js +54 -4
- package/commands/init.js +68 -92
- package/commands/install.js +40 -0
- package/commands/integrations.js +565 -30
- package/commands/interview.js +8 -0
- package/commands/land.js +48 -17
- package/commands/learn.js +29 -4
- package/commands/log.js +51 -0
- package/commands/member.js +68 -10
- package/commands/mission.js +287 -50
- package/commands/now.js +15 -3
- package/commands/orb.js +97 -2
- package/commands/pack.js +83 -9
- package/commands/playbook.js +381 -0
- package/commands/plugin.js +16 -0
- package/commands/radar.js +31 -7
- package/commands/recap.js +128 -21
- package/commands/release.js +102 -2
- package/commands/review.js +5 -10
- package/commands/revisions.js +55 -0
- package/commands/run-front.js +12 -4
- package/commands/scout.js +12 -1
- package/commands/search.js +123 -28
- package/commands/sign.js +2 -2
- package/commands/signup.js +12 -3
- package/commands/site-deploy.js +17 -4
- package/commands/site.js +2 -2
- package/commands/skill-eval.js +289 -0
- package/commands/skill.js +56 -6
- package/commands/social.js +603 -0
- package/commands/spaceship.js +69 -6
- package/commands/stream.js +8 -1
- package/commands/study.js +32 -19
- package/commands/sync.js +28 -22
- package/commands/task.js +435 -60
- package/commands/teach.js +72 -63
- package/commands/terminal.js +25 -9
- package/commands/topup.js +88 -0
- package/commands/truth.js +52 -6
- package/commands/usage.js +91 -0
- package/commands/verify.js +3 -2
- package/commands/version.js +3 -1
- package/commands/voice.js +5 -1
- package/commands/who.js +69 -11
- package/commands/wiki.js +7 -4
- package/commands/wish.js +76 -5
- package/commands/workflow.js +327 -145
- package/commands/worktree.js +1 -0
- package/commands/write.js +5 -0
- package/commands/x-search.js +340 -0
- package/commands/xp.js +5 -1
- package/commands/youtube.js +551 -25
- package/lib/account-bound.js +47 -0
- package/lib/auto-accept-certified.js +8 -1
- package/lib/auto-lessons.js +186 -0
- package/lib/autoland.js +4 -2
- package/lib/chat-log-scan.js +7 -4
- package/lib/cli-json.js +77 -0
- package/lib/cli-scope.js +26 -0
- package/lib/codex-flight.js +1 -0
- package/lib/conductor-artifacts.js +1 -1
- package/lib/context-gatherer.js +11 -0
- package/lib/developer-api.js +116 -0
- package/lib/feedback-triage.js +274 -0
- package/lib/first-minute.js +398 -0
- package/lib/fleet.js +115 -34
- package/lib/functional-owner.js +22 -0
- package/lib/known-commands.js +31 -5
- package/lib/member-scaffold.js +197 -0
- package/lib/mission-root.js +4 -2
- package/lib/noninteractive.js +88 -0
- package/lib/policy-lessons.js +4 -1
- package/lib/revision-metric.js +279 -0
- package/lib/scratch-root.js +48 -0
- package/lib/skill-eval-gate.js +249 -0
- package/lib/task-db.js +4 -0
- package/lib/task-proof.js +69 -8
- package/lib/verifier-quality.js +69 -0
- package/lib/wish-audit.js +2 -2
- package/lib/wish-delegate.js +10 -1
- package/lib/workspace-scaffold.js +270 -0
- package/package.json +3 -2
- package/scripts/det/checklist-score.js +191 -0
- package/scripts/det/ytsearch +31 -0
- package/utils/update-check.js +15 -0
package/FOR_AGENTS.md
CHANGED
|
@@ -48,6 +48,13 @@ atris task claim <id> --as <your-name>
|
|
|
48
48
|
atris task ready <id> --proof "command that passed"
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
+
Capture a quick idea without opening the journal REPL:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
atris log "an idea for later"
|
|
55
|
+
# or headless: atris wish "an idea" --json --no-mission
|
|
56
|
+
```
|
|
57
|
+
|
|
51
58
|
**Never** `atris task accept` unless a human approved. That's their gate, not yours.
|
|
52
59
|
|
|
53
60
|
Every task starts with three plain sentences: what changes, why it matters, and
|
package/README.md
CHANGED
|
@@ -207,7 +207,7 @@ atris business record atris/reports/2026-04-12-operator-recap.md --outcome mixed
|
|
|
207
207
|
| `atris run diff` | Compare two run logs side by side |
|
|
208
208
|
| `atris autopilot` | Keep the workspace moving: mission/member legs until `atris autopilot stop` (`--legacy` for the old approval loop) |
|
|
209
209
|
| `atris pulse` | Install or run the durable overnight heartbeat |
|
|
210
|
-
| `atris log` | Add inbox
|
|
210
|
+
| `atris log "note"` | Add an inbox item to today's journal (`log --repl` for the editor; `wish` for headless intake) |
|
|
211
211
|
| `atris now` | Show the current operating truth |
|
|
212
212
|
| `atris radar` | Show live agents joined with tasks, missions, and worktrees |
|
|
213
213
|
| `atris ctop` | Show process-first live agent CPU and memory |
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
This checklist prevents slop by forcing intentionality. Before finalizing ANY output, run through these gates.
|
|
6
6
|
|
|
7
|
+
The build enforces deterministic prose tells; see `commands/slop.js`. Review only the judgment calls below.
|
|
8
|
+
|
|
7
9
|
---
|
|
8
10
|
|
|
9
11
|
## The Differentiation Gate
|
|
@@ -40,7 +42,6 @@ If you can't answer in one sentence, you're hedging. Pick a direction and commit
|
|
|
40
42
|
|
|
41
43
|
### Punctuation
|
|
42
44
|
- [ ] No sparkles or decorative emoji (✨ 🚀 💡 🎯)
|
|
43
|
-
- [ ] No em dashes (—) unless direct quote or title separator
|
|
44
45
|
- [ ] No ellipsis for drama (...)
|
|
45
46
|
- [ ] No exclamation points unless error/warning
|
|
46
47
|
|
|
@@ -465,8 +465,9 @@ Provide:
|
|
|
465
465
|
|
|
466
466
|
Run this check before approving ANY writing. LLMs will violate these rules even when explicitly trying not to.
|
|
467
467
|
|
|
468
|
+
The build enforces deterministic prose tells; see `commands/slop.js`. Review the judgment-only items below.
|
|
469
|
+
|
|
468
470
|
```
|
|
469
|
-
[ ] No em dashes anywhere
|
|
470
471
|
[ ] No rule of three (exactly 3 items in a list or 3 parallel phrases)
|
|
471
472
|
[ ] No negative parallelisms ("didn't X, needed Y" or "not just X, it's Y")
|
|
472
473
|
[ ] No AI vocabulary (crucial, delve, unpack, landscape, pivotal, testament, vibrant, etc.)
|
|
@@ -141,7 +141,7 @@ This skill compounds or it dies. The contract, every frontend session:
|
|
|
141
141
|
- WCAG AA contrast (4.5:1 text, 3:1 UI)?
|
|
142
142
|
- works on mobile (44px touch targets, no horizontal scroll, readable text)?
|
|
143
143
|
- respects `prefers-reduced-motion`?
|
|
144
|
-
- zero shout-cased copy?
|
|
144
|
+
- zero shout-cased copy?
|
|
145
145
|
- did you name the moves in craft vocabulary (vertical rhythm, negative space, bolder/quieter)?
|
|
146
146
|
- did you use anti-attractors (named what to avoid, seeded a reference, set a constraint)?
|
|
147
147
|
- if agent-facing: does it have agentic affordances (clear errors, structured output, stable exit codes)?
|
|
@@ -12,6 +12,19 @@ tags:
|
|
|
12
12
|
|
|
13
13
|
> Drop this in `~/.claude/skills/x-search/SKILL.md` and Claude Code becomes your X/Twitter intelligence tool.
|
|
14
14
|
|
|
15
|
+
## Customer path (preferred)
|
|
16
|
+
|
|
17
|
+
Logged-in customers should use the CLI. Same auth and billing as `atris youtube process` (5 credits).
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
atris x-search "MCP agents"
|
|
21
|
+
atris x-search "MCP agents" --limit 5 --days 2
|
|
22
|
+
atris x-search person --name "Leah Bonvissuto" --handle leahbon
|
|
23
|
+
atris x-search --help
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Add `--json` for the raw API payload. Curl below is the raw API for debugging only.
|
|
27
|
+
|
|
15
28
|
## Bootstrap (ALWAYS Run First)
|
|
16
29
|
|
|
17
30
|
Before any X search operation, run this bootstrap to ensure everything is set up:
|
|
@@ -145,19 +158,16 @@ curl -s -X POST "https://api.atris.ai/api/x-search/research-person" \
|
|
|
145
158
|
## Workflows
|
|
146
159
|
|
|
147
160
|
### "Search X for tweets about a topic"
|
|
148
|
-
1.
|
|
149
|
-
2.
|
|
150
|
-
3. Display results: tweet text, author, engagement, links
|
|
161
|
+
1. Prefer `atris x-search "<query>"` (or bootstrap + curl if debugging the API)
|
|
162
|
+
2. Display results: tweet text, citations (x.com links), credits used/remaining
|
|
151
163
|
|
|
152
164
|
### "Find tweets from the last week about X"
|
|
153
|
-
1.
|
|
154
|
-
2.
|
|
155
|
-
3. Display results sorted by engagement
|
|
165
|
+
1. Prefer `atris x-search "<query>" --days 7 --limit 10`
|
|
166
|
+
2. Display results and citations
|
|
156
167
|
|
|
157
168
|
### "Research a person before a meeting"
|
|
158
|
-
1.
|
|
159
|
-
2.
|
|
160
|
-
3. Display profile, background, talking points
|
|
169
|
+
1. Prefer `atris x-search person --name "..." --handle ... --company ... --context "..."`
|
|
170
|
+
2. Display profile, background, talking points
|
|
161
171
|
|
|
162
172
|
### "Monitor keyword clusters for revenue intel"
|
|
163
173
|
1. Run bootstrap
|
|
@@ -214,21 +224,13 @@ curl -s -X POST "https://api.atris.ai/api/x-search/research-person" \
|
|
|
214
224
|
# Setup (one time)
|
|
215
225
|
npm install -g atris && atris login
|
|
216
226
|
|
|
217
|
-
#
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
# Search tweets
|
|
221
|
-
curl -s -X POST "https://api.atris.ai/api/x-search/search" \
|
|
222
|
-
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
|
|
223
|
-
-d '{"query": "AI agents", "limit": 10}'
|
|
227
|
+
# Preferred: CLI
|
|
228
|
+
atris x-search "AI agents" --limit 10 --days 7
|
|
229
|
+
atris x-search person --name "John Doe" --handle johndoe --company Acme
|
|
224
230
|
|
|
225
|
-
#
|
|
231
|
+
# Raw API (debug)
|
|
232
|
+
TOKEN=$(node -e "console.log(require('$HOME/.atris/credentials.json').token)")
|
|
226
233
|
curl -s -X POST "https://api.atris.ai/api/x-search/search" \
|
|
227
234
|
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
|
|
228
235
|
-d '{"query": "AI agents", "limit": 10, "days_back": 7}'
|
|
229
|
-
|
|
230
|
-
# Research a person
|
|
231
|
-
curl -s -X POST "https://api.atris.ai/api/x-search/research-person" \
|
|
232
|
-
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
|
|
233
|
-
-d '{"name": "John Doe", "handle": "johndoe", "company": "Acme"}'
|
|
234
236
|
```
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: youtube
|
|
3
|
-
description: "A YouTube link in any message routes here
|
|
4
|
-
version: 2.
|
|
3
|
+
description: "YouTube discovery and learning. Use atris youtube search QUERY to get free youtu.be links (local ytsearch/yt-dlp, zero credits). Use atris youtube search --paid QUERY to buy watch permalinks from Atris (5 credits, login required). A YouTube link in any message routes here: run atris youtube notes URL FIRST (free, about 30s, quotes verified). Never summarize a video from model memory. Use atris youtube process only to store it as queryable knowledge (5 credits). Triggers on: youtube search, find videos, paid youtube search, any youtube.com or youtu.be link, youtube, video, watch this, notes on this."
|
|
4
|
+
version: 2.7.0
|
|
5
5
|
tags:
|
|
6
6
|
- youtube
|
|
7
7
|
- research
|
|
@@ -11,18 +11,16 @@ tags:
|
|
|
11
11
|
|
|
12
12
|
# YouTube Skill
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
Three rails. Pick before running anything:
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
- **Search / discovery (free)** → `atris youtube search "<query>"`. Local ytsearch or yt-dlp `ytsearchN:`. Returns title, channel, duration, views, upload_date, and a `youtu.be` link. Zero credits. Use this to *get* video links; do not call process until the user picks one.
|
|
17
|
+
- **Paid search (5 credits)** → `atris youtube search --paid "<query>"`. Posts `/youtube/search` with the stored token or a youtube-scope agent mint. Prints watch permalinks, titles, and credits. Use this when the customer wants to buy permalinks the same way as `atris x-search`. Do not replace free search with this.
|
|
18
|
+
- **Notes / learning (free)** → `atris youtube notes <url>`. Local captions + a fast engine, about 30 seconds, quotes verified against the transcript. Use when the goal is to learn from a video you already have.
|
|
19
|
+
- **Process / product (5 credits)** → `atris youtube process <url>`. Credits-billed cloud knowledge store. Use when a customer/agent needs the video stored as Atris knowledge.
|
|
17
20
|
|
|
18
|
-
|
|
21
|
+
If the user says "find videos", "search youtube", or "get youtube links" → search. If they say "learn from", "notes on", "alpha", or "rabbit hole" → notes. If they say "process", "store", "add to knowledge" → process.
|
|
19
22
|
|
|
20
|
-
|
|
21
|
-
Canonical ytnotes source is `scripts/det/ytnotes` (install: `ln -sf "$PWD/scripts/det/ytnotes" ~/.local/bin/ytnotes`).
|
|
22
|
-
Runs are scored by `node scripts/det/ytrail-eval.js`.
|
|
23
|
-
- **Product rail** → this skill (`atris youtube process`). Credits-billed, stores knowledge in the Atris backend, customer-facing path. Use this when a customer/agent needs the video stored as Atris knowledge or answered via the API.
|
|
24
|
-
|
|
25
|
-
If the user says "learn from", "notes on", "alpha", or "rabbit hole" → alpha-learn. If they say "process", "store", "add to knowledge" → this skill.
|
|
23
|
+
Never summarize a video from model memory; that is fabrication.
|
|
26
24
|
|
|
27
25
|
## Bootstrap (ALWAYS Run First)
|
|
28
26
|
|
|
@@ -36,30 +34,57 @@ if ! command -v atris &> /dev/null; then
|
|
|
36
34
|
npm install -g atris
|
|
37
35
|
fi
|
|
38
36
|
|
|
39
|
-
# 2.
|
|
37
|
+
# 2. Optional login (required only for process / credits)
|
|
40
38
|
if [ ! -f ~/.atris/credentials.json ]; then
|
|
41
|
-
echo "Not logged in.
|
|
42
|
-
exit 1
|
|
39
|
+
echo "Not logged in. Search and notes still work. Process needs: atris login"
|
|
43
40
|
fi
|
|
44
41
|
|
|
45
|
-
# 3. Extract token
|
|
46
|
-
if
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
42
|
+
# 3. Extract token when present
|
|
43
|
+
if [ -f ~/.atris/credentials.json ]; then
|
|
44
|
+
if command -v node &> /dev/null; then
|
|
45
|
+
TOKEN=$(node -e "console.log(require('$HOME/.atris/credentials.json').token)")
|
|
46
|
+
elif command -v python3 &> /dev/null; then
|
|
47
|
+
TOKEN=$(python3 -c "import json,os; print(json.load(open(os.path.expanduser('~/.atris/credentials.json')))['token'])")
|
|
48
|
+
elif command -v jq &> /dev/null; then
|
|
49
|
+
TOKEN=$(jq -r '.token' ~/.atris/credentials.json)
|
|
50
|
+
fi
|
|
51
|
+
export ATRIS_TOKEN="$TOKEN"
|
|
55
52
|
fi
|
|
56
53
|
|
|
57
|
-
echo "Ready. YouTube skill active (5 credits
|
|
58
|
-
export ATRIS_TOKEN="$TOKEN"
|
|
54
|
+
echo "Ready. YouTube skill active (search + notes free; process 5 credits)."
|
|
59
55
|
```
|
|
60
56
|
|
|
61
57
|
---
|
|
62
58
|
|
|
59
|
+
## Search videos (free)
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
atris youtube search "MCP agents 2026"
|
|
63
|
+
atris youtube search "MCP agents" --limit 10
|
|
64
|
+
atris youtube search "MCP agents" --json
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Uses `ytsearch` on PATH when present, else bundled `scripts/det/ytsearch`, else `yt-dlp --flat-playlist --print` with `ytsearchN:`. No credits. No `/agent/process_youtube` call.
|
|
68
|
+
|
|
69
|
+
## Paid search (5 credits)
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
atris youtube search --paid "MCP agents 2026"
|
|
73
|
+
atris youtube search --paid "MCP agents" --limit 10
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Requires login. Uses the stored token, or mints a youtube-scope agent token from disk the same way as `atris youtube process` and `atris x-search`. Never `/auth/cli`. Prints `title | watch permalink` plus credits. Empty or failed searches refund.
|
|
77
|
+
|
|
78
|
+
Line contract:
|
|
79
|
+
|
|
80
|
+
```text
|
|
81
|
+
title | channel | duration | views | upload_date | https://youtu.be/ID
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
`upload_date` is `YYYYMMDD` (or `NA`) so callers can apply a freshness gate (for example last 6 weeks). After the user picks a URL, run notes (free) or process (5 credits).
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
63
88
|
## API Reference
|
|
64
89
|
|
|
65
90
|
Base: `https://api.atris.ai/api`
|
|
@@ -118,18 +143,23 @@ atris youtube process "https://www.youtube.com/watch?v=..." \
|
|
|
118
143
|
|
|
119
144
|
## Workflows
|
|
120
145
|
|
|
146
|
+
### "Find YouTube videos about X"
|
|
147
|
+
1. Search: `atris youtube search "X" --limit 10`
|
|
148
|
+
2. Show title, channel, duration, views, upload_date, and the youtu.be link
|
|
149
|
+
3. Stop. Let the user pick. Do not auto-process.
|
|
150
|
+
|
|
121
151
|
### "Learn from this YouTube video"
|
|
122
152
|
1. Run bootstrap
|
|
123
|
-
2.
|
|
153
|
+
2. Notes first: `atris youtube notes <url>`
|
|
124
154
|
3. Display the analysis as flowing prose: ideas and who said them, never timecodes. Timestamps stay in the stored notes file for verification, not in the reply.
|
|
125
155
|
|
|
126
156
|
### "What does this video say about X?"
|
|
127
157
|
1. Run bootstrap
|
|
128
|
-
2.
|
|
158
|
+
2. Notes or process with focused query: `atris youtube process <url> --query "What does this say about X?"`
|
|
129
159
|
3. Show the focused analysis as prose; cite the speaker, not the clock
|
|
130
160
|
|
|
131
161
|
### "Process multiple videos on a topic"
|
|
132
|
-
1.
|
|
162
|
+
1. Search to discover links (free), or use URLs the user already has
|
|
133
163
|
2. Process each sequentially (each = 5 credits):
|
|
134
164
|
```bash
|
|
135
165
|
VIDEOS=(
|
|
@@ -171,13 +201,20 @@ Two layers, never mixed. The reply the person reads is flowing prose: ideas, spe
|
|
|
171
201
|
|
|
172
202
|
## How It Works
|
|
173
203
|
|
|
174
|
-
`atris youtube`
|
|
204
|
+
`atris youtube search` shells to local ytsearch/yt-dlp and never hits the Atris API.
|
|
205
|
+
|
|
206
|
+
`atris youtube search --paid` posts `{query, limit}` to `/youtube/search` with bearer auth. Agent tokens need the youtube scope.
|
|
207
|
+
|
|
208
|
+
`atris youtube` process first tries local transcript extraction with `yt-dlp`. It sends timestamped `transcript_text` to `/agent/process_youtube` with `cache_transcript=false`. If local transcript processing fails with a retryable error, it falls back to cloud video processing. Use `--json` to inspect `metadata.processing_method` and `metadata.transcript_source`.
|
|
175
209
|
|
|
176
210
|
---
|
|
177
211
|
|
|
178
212
|
## Billing
|
|
179
213
|
|
|
180
|
-
- **
|
|
214
|
+
- **Search: 0 credits** (local discovery)
|
|
215
|
+
- **Paid search: 5 credits** (`--paid`; refund on empty or fail)
|
|
216
|
+
- **Notes: 0 credits** (local captions + engine)
|
|
217
|
+
- **Process: 5 credits per video** (flat rate, any length)
|
|
181
218
|
- Credits deducted before processing
|
|
182
219
|
- **Full refund** if Gemini fails or returns an error
|
|
183
220
|
- Insufficient credits returns 402 with your current balance
|
|
@@ -192,6 +229,8 @@ Two layers, never mixed. The reply the person reads is flowing prose: ideas, spe
|
|
|
192
229
|
| `402` | Not enough credits | Check balance, purchase at atris.ai |
|
|
193
230
|
| `400` | Invalid YouTube URL | Check URL format |
|
|
194
231
|
| `502` | Transcript or cloud processing failed | Retry; credits auto-refunded when backend fails |
|
|
232
|
+
| search exit 2 | ytsearch/yt-dlp missing or no results | Install yt-dlp, or put ytsearch on PATH |
|
|
233
|
+
| search 429 | YouTube rate-limited local search | serve last same-query free rows if younger than one hour; otherwise retry later; do not use --paid |
|
|
195
234
|
|
|
196
235
|
---
|
|
197
236
|
|
|
@@ -201,10 +240,20 @@ Two layers, never mixed. The reply the person reads is flowing prose: ideas, spe
|
|
|
201
240
|
# Setup (once)
|
|
202
241
|
npm install -g atris && atris login
|
|
203
242
|
|
|
204
|
-
#
|
|
243
|
+
# Free: discover videos
|
|
244
|
+
atris youtube search "MCP agents 2026"
|
|
245
|
+
atris youtube search "MCP agents" --limit 10
|
|
246
|
+
|
|
247
|
+
# Paid: watch permalinks from Atris (5 credits)
|
|
248
|
+
atris youtube search --paid "MCP agents 2026"
|
|
249
|
+
|
|
250
|
+
# Free: notes on a URL you already have
|
|
251
|
+
atris youtube notes "https://youtu.be/VIDEO_ID"
|
|
252
|
+
|
|
253
|
+
# Get token (process only)
|
|
205
254
|
TOKEN=$(node -e "console.log(require('$HOME/.atris/credentials.json').token)")
|
|
206
255
|
|
|
207
|
-
# Process a video
|
|
256
|
+
# Process a video (5 credits)
|
|
208
257
|
atris youtube process "https://youtube.com/watch?v=..." --query "Create a outline (flowing, idea-first) and action brief"
|
|
209
258
|
|
|
210
259
|
# Process + store to agent knowledge
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: template-soul
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
born: YYYY-MM-DD
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Soul
|
|
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.
|
|
10
|
+
|
|
11
|
+
## Beliefs
|
|
12
|
+
|
|
13
|
+
What you hold true about your work. Not rules — convictions.
|
|
14
|
+
|
|
15
|
+
- (Replace with 3-5 beliefs that guide judgment in ambiguous situations)
|
|
16
|
+
|
|
17
|
+
## Values
|
|
18
|
+
|
|
19
|
+
What you optimize for when nothing else tells you what to do.
|
|
20
|
+
|
|
21
|
+
- (Replace with 2-3 values, ordered by priority)
|
|
22
|
+
|
|
23
|
+
## Lessons
|
|
24
|
+
|
|
25
|
+
Hard-won patterns from experience. Updated as the agent works.
|
|
26
|
+
|
|
27
|
+
- (Empty until the agent has lived. Synthesized from journal entries, not copied.)
|
|
28
|
+
|
|
29
|
+
## Edges
|
|
30
|
+
|
|
31
|
+
Where this agent's judgment is strong and where it's weak. Honest self-assessment.
|
|
32
|
+
|
|
33
|
+
- **Strong:** (what this agent is unusually good at)
|
|
34
|
+
- **Weak:** (what this agent tends to get wrong or overlook)
|
|
35
|
+
|
|
36
|
+
## Voice
|
|
37
|
+
|
|
38
|
+
Not communication style (that's PERSONA.md). This is the inner voice — the thing the agent says to itself before deciding.
|
|
39
|
+
|
|
40
|
+
- (One sentence that captures how this agent thinks)
|
|
@@ -125,11 +125,10 @@ Review is not complete until residual risk is named.
|
|
|
125
125
|
│ ✓ MAP.md updated (if needed) │
|
|
126
126
|
│ ✓ Wiki status checked (if present) │
|
|
127
127
|
│ ✓ Error handling present │
|
|
128
|
-
│ ✓ Anti-slop check (see below) │
|
|
129
128
|
└─────────────────────────────────────┘
|
|
130
129
|
```
|
|
131
130
|
|
|
132
|
-
**Anti-slop
|
|
131
|
+
**Anti-slop:** The build enforces deterministic tells; see `commands/slop.js`. Review only the remaining judgment calls in `atris/policies/ANTISLOP.md`.
|
|
133
132
|
|
|
134
133
|
**Final ASCII:**
|
|
135
134
|
```
|
package/bin/atris
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# Tiny POSIX shim so sandboxes that refuse a large Node bin still get a
|
|
3
|
+
# runnable public entry. Real CLI lives next to this file as atris.js.
|
|
4
|
+
# Resolve symlinks so npm/global PATH links still find atris.js.
|
|
5
|
+
set -eu
|
|
6
|
+
here=$0
|
|
7
|
+
while [ -h "$here" ]; do
|
|
8
|
+
link=$(ls -ld "$here")
|
|
9
|
+
link=${link#*" -> "}
|
|
10
|
+
case $link in
|
|
11
|
+
/*) here=$link ;;
|
|
12
|
+
*) here=$(dirname "$here")/$link ;;
|
|
13
|
+
esac
|
|
14
|
+
done
|
|
15
|
+
DIR=$(CDPATH= cd -- "$(dirname "$here")" && pwd)
|
|
16
|
+
if command -v node >/dev/null 2>&1; then
|
|
17
|
+
exec node "$DIR/atris.js" "$@"
|
|
18
|
+
fi
|
|
19
|
+
echo "atris: node not found on PATH. install Node 22+ then retry." >&2
|
|
20
|
+
echo "hint: atris doctor --json" >&2
|
|
21
|
+
exit 127
|