@aitne-sh/aitne 0.1.9 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -6
- package/agent-assets/docs/concepts/agent-day.md +2 -2
- package/agent-assets/docs/concepts/costs-and-quotas.md +4 -3
- package/agent-assets/docs/concepts/delegated-mode.md +5 -5
- package/agent-assets/docs/concepts/memory-model.md +6 -3
- package/agent-assets/docs/concepts/safety-model.md +19 -16
- package/agent-assets/docs/concepts/skills.md +2 -2
- package/agent-assets/docs/features/integrations/browser-history.md +9 -8
- package/agent-assets/docs/features/integrations/calendar.md +4 -4
- package/agent-assets/docs/features/integrations/mail.md +3 -2
- package/agent-assets/docs/features/lifestyle/git.md +3 -3
- package/agent-assets/docs/features/lifestyle/reading.md +15 -8
- package/agent-assets/docs/features/lifestyle/travel-bookings.md +4 -3
- package/agent-assets/docs/features/memory-files/agent-journal.md +30 -12
- package/agent-assets/docs/features/memory-files/agent-lessons.md +177 -0
- package/agent-assets/docs/features/memory-files/projects.md +6 -4
- package/agent-assets/docs/features/memory-files/roadmap.md +17 -14
- package/agent-assets/docs/features/messaging/overview.md +5 -5
- package/agent-assets/docs/features/messaging/telegram.md +10 -9
- package/agent-assets/docs/features/operations/activity-and-conversations.md +5 -4
- package/agent-assets/docs/features/operations/approvals.md +6 -5
- package/agent-assets/docs/features/operations/managed-chromium.md +3 -2
- package/agent-assets/docs/features/operations/quiet-hours.md +4 -3
- package/agent-assets/docs/features/routines/custom-routines.md +11 -7
- package/agent-assets/docs/features/routines/evening-review.md +10 -2
- package/agent-assets/docs/features/routines/morning-routine.md +4 -3
- package/agent-assets/docs/features/routines/weekly-review.md +6 -0
- package/agent-assets/docs/features/wiki/commands.md +4 -4
- package/agent-assets/docs/features/wiki/cost-and-approval.md +4 -3
- package/agent-assets/docs/features/wiki/dashboard.md +7 -6
- package/agent-assets/docs/features/wiki/overview.md +3 -3
- package/agent-assets/docs/features/wiki/search.md +5 -5
- package/agent-assets/docs/features/wiki/workspaces.md +2 -2
- package/agent-assets/docs/getting-started/02-first-steps.md +5 -3
- package/agent-assets/docs/getting-started/04-first-day.md +2 -2
- package/agent-assets/docs/glossary.md +4 -4
- package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +2 -2
- package/agent-assets/docs/guides/connect-a-new-mail-account.md +4 -2
- package/agent-assets/docs/guides/explore-with-trace-and-connect.md +5 -4
- package/agent-assets/docs/guides/install-and-run.md +2 -2
- package/agent-assets/docs/guides/maintain-wiki-health.md +2 -2
- package/agent-assets/docs/guides/pause-the-agent.md +9 -5
- package/agent-assets/docs/guides/setup-wizard.md +8 -5
- package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +6 -6
- package/agent-assets/docs/reference/api.md +15 -5
- package/agent-assets/docs/reference/cli-commands.md +3 -3
- package/agent-assets/docs/reference/config.md +21 -4
- package/agent-assets/docs/reference/disallowed-tools.md +6 -4
- package/agent-assets/docs/reference/knowledge-layout.md +11 -2
- package/agent-assets/docs/reference/process-keys.md +2 -2
- package/agent-assets/docs/reference/skills.md +5 -4
- package/agent-assets/docs/troubleshooting/auth-failed.md +9 -8
- package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +16 -9
- package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +2 -2
- package/agent-assets/docs/troubleshooting/quota-exhausted.md +7 -6
- package/agent-assets/skills/agent-actions/SKILL.md +23 -39
- package/agent-assets/skills/agent-create/SKILL.md +15 -6
- package/agent-assets/skills/attach/SKILL.md +8 -27
- package/agent-assets/skills/browser-history/SKILL.md +29 -16
- package/agent-assets/skills/browser-history-respond/SKILL.md +6 -1
- package/agent-assets/skills/browser-task/SKILL.md +22 -27
- package/agent-assets/skills/context/SKILL.md +23 -32
- package/agent-assets/skills/context/curation.json +12 -12
- package/agent-assets/skills/context/references/api.md +17 -17
- package/agent-assets/skills/context/references/required-frontmatter.md +10 -9
- package/agent-assets/skills/context/references/snapshot-files.md +12 -11
- package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +5 -5
- package/agent-assets/skills/context/seeds/frontmatter-requirements.seed.json +3 -3
- package/agent-assets/skills/docs-search/SKILL.md +19 -31
- package/agent-assets/skills/external-services/SKILL.delegated.claude.md +8 -95
- package/agent-assets/skills/external-services/SKILL.delegated.codex.md +8 -94
- package/agent-assets/skills/external-services/SKILL.delegated.gemini.md +8 -94
- package/agent-assets/skills/external-services/SKILL.native.claude.md +2 -2
- package/agent-assets/skills/external-services/references/exec-errors.md +32 -0
- package/agent-assets/skills/external-services/references/skills-crud.md +5 -5
- package/agent-assets/skills/gmail-lifestyle/SKILL.md +3 -2
- package/agent-assets/skills/gmail-lifestyle/references/receipts-api.md +4 -0
- package/agent-assets/skills/gmail-lifestyle/references/travel-bookings-api.md +9 -0
- package/agent-assets/skills/mail/SKILL.delegated.claude.md +13 -25
- package/agent-assets/skills/mail/SKILL.delegated.codex.md +3 -2
- package/agent-assets/skills/mail/SKILL.delegated.gemini.md +3 -2
- package/agent-assets/skills/mail/SKILL.md +10 -18
- package/agent-assets/skills/mail/SKILL.native.claude.md +8 -7
- package/agent-assets/skills/mail/SKILL.native.codex.md +1 -1
- package/agent-assets/skills/mail/SKILL.native.gemini.md +1 -1
- package/agent-assets/skills/mail/references/api.md +6 -1
- package/agent-assets/skills/mail/references/examples.md +2 -1
- package/agent-assets/skills/managed-tasks/SKILL.md +44 -77
- package/agent-assets/skills/managed-tasks/references/errors.md +25 -14
- package/agent-assets/skills/managed-tasks/references/output-path.md +33 -17
- package/agent-assets/skills/managed-tasks/references/recurrence-rule.md +6 -4
- package/agent-assets/skills/management-policy/SKILL.md +10 -11
- package/agent-assets/skills/management-policy/references/policy-workflow.md +4 -5
- package/agent-assets/skills/notify/SKILL.md +11 -13
- package/agent-assets/skills/notify/references/priority.md +28 -25
- package/agent-assets/skills/notion/SKILL.delegated.claude.md +1 -1
- package/agent-assets/skills/notion/SKILL.delegated.codex.md +1 -1
- package/agent-assets/skills/notion/SKILL.delegated.gemini.md +1 -1
- package/agent-assets/skills/notion/SKILL.md +17 -17
- package/agent-assets/skills/notion/SKILL.native.claude.md +1 -1
- package/agent-assets/skills/notion/SKILL.native.codex.md +1 -1
- package/agent-assets/skills/notion/SKILL.native.gemini.md +1 -1
- package/agent-assets/skills/observations/SKILL.md +5 -20
- package/agent-assets/skills/observations/references/fetch-fallback.md +22 -0
- package/agent-assets/skills/project-doc/SKILL.md +9 -6
- package/agent-assets/skills/project-doc/curation.json +3 -3
- package/agent-assets/skills/project-doc/seeds/project-shape.seed.json +2 -2
- package/agent-assets/skills/project-doc/seeds/slug-grammar.seed.json +3 -3
- package/agent-assets/skills/reading/SKILL.md +8 -42
- package/agent-assets/skills/reading/references/reading-taste.md +5 -5
- package/agent-assets/skills/roadmap/SKILL.md +3 -19
- package/agent-assets/skills/roadmap/references/api.md +16 -6
- package/agent-assets/skills/roadmap/references/horizon-tags.md +11 -0
- package/agent-assets/skills/roadmap/references/migration.md +8 -6
- package/agent-assets/skills/roadmap/references/retention.md +18 -0
- package/agent-assets/skills/schedule/SKILL.md +9 -26
- package/agent-assets/skills/schedule/references/importance.md +23 -0
- package/agent-assets/skills/schedule/references/recurrence-rule.md +6 -4
- package/agent-assets/skills/scheduled-managed-task/SKILL.md +34 -37
- package/agent-assets/skills/today/SKILL.md +20 -79
- package/agent-assets/skills/today/references/today-skeleton.md +66 -0
- package/agent-assets/skills/today/seeds/agent-notes-flavors.seed.json +1 -1
- package/agent-assets/skills/today/seeds/section-shape.seed.json +6 -6
- package/agent-assets/skills/user-interview/SKILL.md +15 -90
- package/agent-assets/skills/user-interview/references/op-briefing.md +1 -1
- package/agent-assets/skills/user-interview/references/op-dm-handler.md +88 -0
- package/agent-assets/skills/user-interview/references/op-morning.md +1 -1
- package/agent-assets/skills/user-interview/references/sweep-and-fallback.md +1 -1
- package/agent-assets/skills/user-profile/SKILL.md +16 -26
- package/agent-assets/skills/user-profile/curation.json +3 -3
- package/agent-assets/skills/user-profile/references/character-preferences.md +3 -3
- package/agent-assets/skills/wiki/wiki-ask/SKILL.md +1 -1
- package/agent-assets/skills/wiki/wiki-compile/SKILL.md +5 -4
- package/agent-assets/skills/wiki/wiki-connect/SKILL.md +32 -5
- package/agent-assets/skills/wiki/wiki-ingest/SKILL.md +6 -50
- package/agent-assets/skills/wiki/wiki-ingest/references/curl-errors.md +58 -0
- package/agent-assets/skills/wiki/wiki-lint/SKILL.md +20 -14
- package/agent-assets/skills/wiki/wiki-trace/SKILL.md +10 -5
- package/agent-assets/skills/wiki/wiki-vault-rules/SKILL.md +2 -0
- package/agent-assets/task-flows/_partials/feedback-capture.md +30 -0
- package/agent-assets/task-flows/message.received.dm.md +4 -0
- package/agent-assets/task-flows/message.received.dm_first.md +4 -0
- package/agent-assets/task-flows/routine.evening_review.md +80 -0
- package/agent-assets/task-flows/routine.monthly_review.md +72 -0
- package/agent-assets/task-flows/routine.weekly_review.md +21 -0
- package/agent-assets/task-flows/wiki.trace.md +1 -1
- package/bin/aitne.mjs +45 -11
- package/package.json +4 -4
- package/scripts/commands/doctor.mjs +11 -2
- package/scripts/lib/process-identity.d.mts +46 -0
- package/scripts/lib/process-identity.mjs +193 -0
- package/scripts/lib/read-api-token.mjs +1 -1
- package/scripts/start.mjs +14 -4
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: context
|
|
3
|
-
description: Load when reading or writing project notes, weekly/monthly summaries, or agent
|
|
3
|
+
description: Load when reading or writing project notes, weekly/monthly summaries, or journal/agent.md. Owns GET/PATCH for context files except today.md and roadmap.md, which use their dedicated skills.
|
|
4
4
|
allowed-tools:
|
|
5
5
|
- Bash(curl *)
|
|
6
6
|
- Read
|
|
@@ -28,23 +28,23 @@ vault**, not this primary store.
|
|
|
28
28
|
|---|---|---|---|
|
|
29
29
|
| `state/today.md` | Today's schedule, tasks, agent log, handoff | See `today` skill | Yes (Morning Routine) |
|
|
30
30
|
| `plans/roadmap.md` | Long-horizon agent action plan + Long-term Plans | See `roadmap` skill | Yes (Roadmap Refresh) |
|
|
31
|
-
| `projects/*.md` | Project state summaries | Any event on material state change | No |
|
|
32
|
-
| `weekly/YYYY-Www.md` | Weekly review snapshots | Friday Weekly Review only (PUT) | No |
|
|
33
|
-
| `monthly/YYYY-MM.md` | Monthly review snapshots | Month-end Monthly Review only (PUT) | No |
|
|
34
|
-
| `
|
|
31
|
+
| `plans/projects/*.md` | Project state summaries | Any event on material state change | No |
|
|
32
|
+
| `journal/weekly/YYYY-Www.md` | Weekly review snapshots | Friday Weekly Review only (PUT) | No |
|
|
33
|
+
| `journal/monthly/YYYY-MM.md` | Monthly review snapshots | Month-end Monthly Review only (PUT) | No |
|
|
34
|
+
| `policies/*.md` | User-controlled policy files | Explicit user request only | No |
|
|
35
35
|
| `policies/management-captures/<slug>.md` | Durable management policies captured from DM | `management-policy` skill — **do not write from here** | No |
|
|
36
36
|
| `policies/management-captures/_index.md` | Readable index of active policies | `management-policy` skill — **do not write from here** | No |
|
|
37
|
-
| `routines/*.md` | Per-cadence check rulebooks | Explicit user request only | No |
|
|
37
|
+
| `policies/routines/*.md` | Per-cadence check rulebooks | Explicit user request only | No |
|
|
38
38
|
| `identity/profile.md` | User identity and preferences | `user-profile` skill — **do not write from here** | No |
|
|
39
|
-
| `
|
|
39
|
+
| `identity/*.md` | Detailed user dictionary | `user-profile` skill — **do not write from here** | No |
|
|
40
40
|
|
|
41
41
|
Morning Routine scans roadmap daily and processes matching Preparation
|
|
42
42
|
Timeline rows into `state/today.md` — see the `roadmap` skill for the full
|
|
43
43
|
entry taxonomy and the morning routine task-flow for the scanning rules.
|
|
44
44
|
|
|
45
|
-
## projects/*.md
|
|
45
|
+
## plans/projects/*.md
|
|
46
46
|
|
|
47
|
-
Update on status changes, milestones reached/delayed, or active set changes. Use `GET /api/context/list/projects` to discover files. The source of truth is always the individual `projects/<slug>.md` notes; `_active.base` is only the Obsidian Bases view config, not a narrative summary note.
|
|
47
|
+
Update on status changes, milestones reached/delayed, or active set changes. Use `GET /api/context/list/plans/projects` to discover files. The source of truth is always the individual `plans/projects/<slug>.md` notes; `_active.base` is only the Obsidian Bases view config, not a narrative summary note.
|
|
48
48
|
|
|
49
49
|
The canonical frontmatter schema is documented in `plans/projects/_index.md`
|
|
50
50
|
(seeded from `agent-assets/templates/plans/projects/_index.md`). The API
|
|
@@ -56,26 +56,16 @@ validates only `type: project`, `owner: shared`, `updated`, and an H1
|
|
|
56
56
|
|
|
57
57
|
## Project DM-intent detection
|
|
58
58
|
|
|
59
|
-
DM-driven project
|
|
60
|
-
`
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
cross-path cancellation, slug grammar, tie-breakers).
|
|
59
|
+
DM-driven project writes are dispatched by
|
|
60
|
+
`_partials/dm-intent.project.md` (the decision tree — match, decline
|
|
61
|
+
markers, confirm sub-flow, slug grammar, tie-breakers — lives there).
|
|
62
|
+
**This skill is the writer:** it executes the `plans/projects/*.md`
|
|
63
|
+
PUT / PATCH / archive per the API Reference below.
|
|
65
64
|
|
|
66
|
-
|
|
67
|
-
goes through `/api/context/projects/*` per the API Reference below. The
|
|
68
|
-
partial dispatches; this skill executes the writes.
|
|
65
|
+
## Snapshot files — weekly / monthly / policies / routines
|
|
69
66
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
"Slug grammar") now live alongside their decision-tree steps inside
|
|
73
|
-
the partial.
|
|
74
|
-
|
|
75
|
-
## Snapshot files — weekly / monthly / rules / routines
|
|
76
|
-
|
|
77
|
-
Weekly and monthly review snapshots, the user-controlled `rules/*.md`
|
|
78
|
-
policy files, the built-in `routines/<cadence>.md` rulebooks, custom
|
|
67
|
+
Weekly and monthly review snapshots, the user-controlled `policies/*.md`
|
|
68
|
+
policy files, the built-in `policies/routines/<cadence>.md` rulebooks, custom
|
|
79
69
|
routines under `policies/routines/custom/`, and the agent-private
|
|
80
70
|
`journal/agent.md` all have stable per-file conventions (writer event,
|
|
81
71
|
verb, frontmatter, retention) documented in the snapshot-files
|
|
@@ -88,11 +78,12 @@ DM handlers and Hourly Checks should generally not write these files
|
|
|
88
78
|
|
|
89
79
|
## Required frontmatter for guarded files
|
|
90
80
|
|
|
91
|
-
Full-file writes to `
|
|
92
|
-
`
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
envelope are in the
|
|
81
|
+
Full-file writes to `identity/*.md`, `policies/*.md`,
|
|
82
|
+
`plans/projects/*.md`, `journal/daily/*.md`, `journal/weekly/*.md`, and
|
|
83
|
+
`journal/monthly/*.md` must open with the matching YAML frontmatter
|
|
84
|
+
(`type`, `owner`, `updated`) followed by at least one H1 heading.
|
|
85
|
+
Per-glob values and the common rejection envelope are in the
|
|
86
|
+
required-frontmatter reference below.
|
|
96
87
|
|
|
97
88
|
{{> ref:required-frontmatter }}
|
|
98
89
|
|
|
@@ -10,12 +10,12 @@
|
|
|
10
10
|
"scope_paths": [
|
|
11
11
|
"state/today.md",
|
|
12
12
|
"plans/roadmap.md",
|
|
13
|
-
"projects/*.md",
|
|
14
|
-
"weekly/*.md",
|
|
15
|
-
"monthly/*.md",
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"agent
|
|
13
|
+
"plans/projects/*.md",
|
|
14
|
+
"journal/weekly/*.md",
|
|
15
|
+
"journal/monthly/*.md",
|
|
16
|
+
"policies/*.md",
|
|
17
|
+
"identity/*.md",
|
|
18
|
+
"journal/agent.md"
|
|
19
19
|
]
|
|
20
20
|
},
|
|
21
21
|
{
|
|
@@ -25,12 +25,12 @@
|
|
|
25
25
|
"human_label": "Required frontmatter for guarded files",
|
|
26
26
|
"description": "Per file-glob: required + conventional frontmatter keys",
|
|
27
27
|
"scope_paths": [
|
|
28
|
-
"projects/*.md",
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"weekly/*.md",
|
|
32
|
-
"monthly/*.md",
|
|
33
|
-
"daily/*.md"
|
|
28
|
+
"plans/projects/*.md",
|
|
29
|
+
"identity/*.md",
|
|
30
|
+
"policies/*.md",
|
|
31
|
+
"journal/weekly/*.md",
|
|
32
|
+
"journal/monthly/*.md",
|
|
33
|
+
"journal/daily/*.md"
|
|
34
34
|
]
|
|
35
35
|
}
|
|
36
36
|
]
|
|
@@ -32,12 +32,13 @@ URL).
|
|
|
32
32
|
### GET /api/context/list/:dir
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
|
-
curl -s http://localhost:8321/api/context/list/projects
|
|
35
|
+
curl -s http://localhost:8321/api/context/list/plans/projects
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
Response: `{ "files": [{ "name", "lastModified" }, …] }`. Use this to
|
|
39
|
-
enumerate `projects/`, `weekly/`, `monthly/`,
|
|
40
|
-
`routines/`, `inbox/` before
|
|
39
|
+
enumerate `plans/projects/`, `journal/weekly/`, `journal/monthly/`,
|
|
40
|
+
`identity/`, `policies/`, `policies/routines/`, `state/inbox/` before
|
|
41
|
+
deciding a write target.
|
|
41
42
|
|
|
42
43
|
### GET /api/context/today/reconciliation
|
|
43
44
|
|
|
@@ -67,21 +68,19 @@ Add `X-Lock-Id: <lock-id>` when writing a locked file (`state/today.md`,
|
|
|
67
68
|
|
|
68
69
|
Common rejections:
|
|
69
70
|
|
|
70
|
-
- `400 {error:"validation_error", message, path}` —
|
|
71
|
-
validator failed
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
71
|
+
- `400 {error:"validation_error", message, path}` — a content-body
|
|
72
|
+
validator failed: `state/today.md` line-1 date regex (the message
|
|
73
|
+
echoes both the supplied date and the daemon's current agent-day) or
|
|
74
|
+
the `plans/roadmap.md` transition guard.
|
|
75
|
+
- `422 {error:"validation_error", message, path}` — *frontmatter* shape
|
|
76
|
+
is missing/wrong on a globbed file (`identity/*.md`, `policies/*.md`,
|
|
77
|
+
`plans/projects/*.md`, `journal/daily/*.md`, `journal/weekly/*.md`,
|
|
78
|
+
`journal/monthly/*.md`). Frontmatter validation is a 422; the today.md
|
|
79
|
+
line-1 case above is a 400.
|
|
75
80
|
- `409 {error:"morning_routine_lock_held"}` — the Morning Routine holds
|
|
76
81
|
the `state/today.md` write lock; `409 {error:"roadmap_write_lock_held"}`
|
|
77
82
|
— another session holds the `plans/roadmap.md` lock. Retry with
|
|
78
83
|
backoff (30s × 3).
|
|
79
|
-
- `400 {error:"validation_error", message, path}` — also covers the
|
|
80
|
-
`state/today.md` line-1 agent-day mismatch (the message echoes both the
|
|
81
|
-
supplied date and the daemon's current agent-day). The `422` status is
|
|
82
|
-
reserved for *frontmatter* validation on globbed files (`user/*.md`,
|
|
83
|
-
`rules/*.md`, `projects/*.md`, `daily/*.md`, `weekly/*.md`,
|
|
84
|
-
`monthly/*.md`), not for today.md line-1.
|
|
85
84
|
|
|
86
85
|
`policies/management.md` is user-controlled policy: modify only when the
|
|
87
86
|
user explicitly asks, and preserve every unrelated section.
|
|
@@ -136,7 +135,7 @@ for those.
|
|
|
136
135
|
|
|
137
136
|
### POST /api/context/archive-today
|
|
138
137
|
|
|
139
|
-
Rotates `state/today.md` → `state/yesterday.md` (synthesized `daily/YYYY-MM-DD.md`
|
|
138
|
+
Rotates `state/today.md` → `state/yesterday.md` (synthesized `journal/daily/YYYY-MM-DD.md`
|
|
140
139
|
is now written by the Morning Routine, not this endpoint). Called by
|
|
141
140
|
the Morning Routine during day rotation; other sessions should NOT
|
|
142
141
|
invoke this directly.
|
|
@@ -145,8 +144,9 @@ invoke this directly.
|
|
|
145
144
|
|
|
146
145
|
Restores the file from snapshot `id` (the daemon snapshots every PUT /
|
|
147
146
|
PATCH / DELETE). Diagnostic / recovery surface; never part of a normal
|
|
148
|
-
write path.
|
|
149
|
-
|
|
147
|
+
write path. Snapshot listing is dashboard-only via the Knowledge page;
|
|
148
|
+
no agent route exists, so `restore-snapshot/:id` is the only
|
|
149
|
+
agent-relevant snapshot op.
|
|
150
150
|
|
|
151
151
|
### POST /api/context/repair/stub
|
|
152
152
|
|
|
@@ -7,8 +7,9 @@ description: YAML frontmatter required by /api/context/* validators on full-file
|
|
|
7
7
|
# Required frontmatter — guarded files
|
|
8
8
|
|
|
9
9
|
Full-file `PUT /api/context/<path>` for the following globs is rejected
|
|
10
|
-
(`
|
|
11
|
-
|
|
10
|
+
(`422 validation_error` — frontmatter shape is a 422, distinct from the
|
|
11
|
+
400 returned for content-body validators) unless the body opens with the
|
|
12
|
+
matching YAML frontmatter followed by at least one H1 heading.
|
|
12
13
|
|
|
13
14
|
Use today's date (the value from `<current_agent_day date="…" />`) for
|
|
14
15
|
`updated`. The daemon does not auto-fill `updated`; an outdated value
|
|
@@ -18,12 +19,12 @@ trips the Evening Review's stale-file detector.
|
|
|
18
19
|
|
|
19
20
|
| File glob | `type` | `owner` | Required H1 |
|
|
20
21
|
|---|---|---|---|
|
|
21
|
-
| `projects/*.md` | `project` | `shared` | Yes |
|
|
22
|
-
| `daily/*.md` | `daily` | `agent` | Yes |
|
|
23
|
-
| `weekly/*.md` | `weekly` | `agent` | Yes |
|
|
24
|
-
| `monthly/*.md` | `monthly` | `agent` | Yes |
|
|
25
|
-
| `
|
|
26
|
-
| `
|
|
22
|
+
| `plans/projects/*.md` | `project` | `shared` | Yes |
|
|
23
|
+
| `journal/daily/*.md` | `daily` | `agent` | Yes |
|
|
24
|
+
| `journal/weekly/*.md` | `weekly` | `agent` | Yes |
|
|
25
|
+
| `journal/monthly/*.md` | `monthly` | `agent` | Yes |
|
|
26
|
+
| `policies/*.md` | `rule` | `shared` | Yes |
|
|
27
|
+
| `identity/*.md` | `user` | `shared` | Yes |
|
|
27
28
|
|
|
28
29
|
Every glob also requires `updated: YYYY-MM-DD`.
|
|
29
30
|
|
|
@@ -55,7 +56,7 @@ have their own validators (date-line regex, transition guard, append-
|
|
|
55
56
|
only mode, policy schema). The frontmatter rules in this reference do
|
|
56
57
|
not apply to them — see each owning skill for the specifics.
|
|
57
58
|
|
|
58
|
-
## Common
|
|
59
|
+
## Common 422 envelope
|
|
59
60
|
|
|
60
61
|
```json
|
|
61
62
|
{
|
|
@@ -7,17 +7,18 @@ description: Weekly / monthly review snapshots, rules / routines files — who w
|
|
|
7
7
|
# Snapshot files — weekly / monthly / rules / routines
|
|
8
8
|
|
|
9
9
|
These files live in the primary management vault under
|
|
10
|
-
`weekly/`, `monthly/`, `
|
|
10
|
+
`journal/weekly/`, `journal/monthly/`, `policies/`, and
|
|
11
|
+
`policies/routines/`. They are not part
|
|
11
12
|
of the day-to-day context churn (`state/today.md`, `plans/roadmap.md`,
|
|
12
|
-
`projects/*.md`); they accumulate slowly and are written by routines
|
|
13
|
+
`plans/projects/*.md`); they accumulate slowly and are written by routines
|
|
13
14
|
or by explicit user request.
|
|
14
15
|
|
|
15
|
-
## weekly/*.md, monthly/*.md
|
|
16
|
+
## journal/weekly/*.md, journal/monthly/*.md
|
|
16
17
|
|
|
17
18
|
| File | Path | Cadence | Writer | Verb |
|
|
18
19
|
|---|---|---|---|---|
|
|
19
|
-
| Weekly review | `weekly/YYYY-Www.md` | Friday Weekly Review only | `routine.weekly_review` | `PUT` (full body) |
|
|
20
|
-
| Monthly review | `monthly/YYYY-MM.md` | Month-end Monthly Review only | `routine.monthly_review` | `PUT` (full body) |
|
|
20
|
+
| Weekly review | `journal/weekly/YYYY-Www.md` | Friday Weekly Review only | `routine.weekly_review` | `PUT` (full body) |
|
|
21
|
+
| Monthly review | `journal/monthly/YYYY-MM.md` | Month-end Monthly Review only | `routine.monthly_review` | `PUT` (full body) |
|
|
21
22
|
|
|
22
23
|
Notes:
|
|
23
24
|
|
|
@@ -25,13 +26,13 @@ Notes:
|
|
|
25
26
|
retry counts, self-critique) go to `journal/agent.md`, not here.
|
|
26
27
|
- Weekly file name uses ISO week (`YYYY-Www` — `2026-W19`, not
|
|
27
28
|
`2026-W5`); pad the week to two digits.
|
|
28
|
-
- Never write `weekly/*.md` or `monthly/*.md` on any other day. The
|
|
29
|
+
- Never write `journal/weekly/*.md` or `journal/monthly/*.md` on any other day. The
|
|
29
30
|
Morning Routine, Hourly Check, Evening Review, and DM handlers do
|
|
30
31
|
not produce these files; if you are not the matching review
|
|
31
32
|
routine, do not PUT this path.
|
|
32
33
|
- `PATCH` is technically accepted but unusual. The normal write is a
|
|
33
34
|
single full-body `PUT` at the end of the review session.
|
|
34
|
-
- **Weekly leverage contract.** `weekly/YYYY-Www.md` carries three
|
|
35
|
+
- **Weekly leverage contract.** `journal/weekly/YYYY-Www.md` carries three
|
|
35
36
|
load-bearing H2 sections — `## Carry Over to Next Week`,
|
|
36
37
|
`## Next Week Focus`, `## Lessons for Next Week` — that the
|
|
37
38
|
morning_routine lifts mechanically via the `<previous_week>` context
|
|
@@ -40,7 +41,7 @@ Notes:
|
|
|
40
41
|
3 bullets respectively; empty sections render as `(none recorded)`
|
|
41
42
|
downstream. Full design: `docs/design/appendices/weekly-next-week-leverage.md`.
|
|
42
43
|
|
|
43
|
-
## agent
|
|
44
|
+
## journal/agent.md
|
|
44
45
|
|
|
45
46
|
| Field | Value |
|
|
46
47
|
|---|---|
|
|
@@ -56,12 +57,12 @@ Weekly Review, and Monthly Review each append their own block.
|
|
|
56
57
|
**Nothing from this file should appear in notifications.** The journal
|
|
57
58
|
is the agent's private metrics surface, not user-readable content.
|
|
58
59
|
|
|
59
|
-
##
|
|
60
|
+
## policies/*.md, policies/routines/*.md
|
|
60
61
|
|
|
61
62
|
User-controlled policy and routine files. Only modify when the user
|
|
62
63
|
explicitly asks to change the policy or routine itself.
|
|
63
64
|
|
|
64
|
-
### `
|
|
65
|
+
### `policies/*.md`
|
|
65
66
|
|
|
66
67
|
- Preserve unrelated sections verbatim. PATCH the one section the
|
|
67
68
|
user is changing; do not full-body PUT.
|
|
@@ -75,7 +76,7 @@ similarity-detection, and pause/resume fan-out for durable policies.
|
|
|
75
76
|
**Do not hand-edit from this skill.** A direct PATCH here bypasses the
|
|
76
77
|
similarity check and the dossier / routine fan-out.
|
|
77
78
|
|
|
78
|
-
### `routines/<cadence>.md` (built-in cadences)
|
|
79
|
+
### `policies/routines/<cadence>.md` (built-in cadences)
|
|
79
80
|
|
|
80
81
|
- Cadences: `morning`, `evening`, `weekly`, `monthly`, `hourly`.
|
|
81
82
|
- Keep the existing frontmatter. Keep a `## Checks` section.
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
"files": [
|
|
4
4
|
{ "path": "state/today.md", "purpose": "today's schedule, tasks, agent log, handoff", "sections": [{ "heading": "## Schedule", "contains": "today's events" }, { "heading": "## Tasks", "contains": "open tasks" }, { "heading": "## Agent Notes", "contains": "agent observations" }] },
|
|
5
5
|
{ "path": "plans/roadmap.md", "purpose": "long-horizon agent action plan + Long-term Plans", "sections": [{ "heading": "## Annual Goals", "contains": "year-scope outcomes" }, { "heading": "## Quarterly Milestones", "contains": "quarter-scope deliverables" }, { "heading": "## Focus Areas", "contains": "current themes of work" }] },
|
|
6
|
-
{ "path": "projects/*.md", "purpose": "per-project state summaries (slug-named)", "sections": [{ "heading": "## Overview", "contains": "what the project is about" }, { "heading": "## Lifecycle Phases", "contains": "phase ladder for the project" }] },
|
|
7
|
-
{ "path": "weekly/*.md", "purpose": "weekly review snapshots (YYYY-Www); Carry Over / Next Week Focus / Lessons are lifted into next week's morning_routine via <previous_week>", "sections": [{ "heading": "## Highlights", "contains": "wins of the week" }, { "heading": "## Open Loops", "contains": "tasks/commitments still pending" }, { "heading": "## Carry Over to Next Week", "contains": "open loops to carry over (max 5) with one-line reason" }, { "heading": "## Next Week Focus", "contains": "top priorities for next week (max 3)" }, { "heading": "## Lessons for Next Week", "contains": "behavioral observation → action (max 3)" }] },
|
|
8
|
-
{ "path": "monthly/*.md", "purpose": "monthly review snapshots (YYYY-MM)", "sections": [{ "heading": "## Theme", "contains": "the month's overall theme" }] },
|
|
9
|
-
{ "path": "
|
|
10
|
-
{ "path": "
|
|
6
|
+
{ "path": "plans/projects/*.md", "purpose": "per-project state summaries (slug-named)", "sections": [{ "heading": "## Overview", "contains": "what the project is about" }, { "heading": "## Lifecycle Phases", "contains": "phase ladder for the project" }] },
|
|
7
|
+
{ "path": "journal/weekly/*.md", "purpose": "weekly review snapshots (YYYY-Www); Carry Over / Next Week Focus / Lessons are lifted into next week's morning_routine via <previous_week>", "sections": [{ "heading": "## Highlights", "contains": "wins of the week" }, { "heading": "## Open Loops", "contains": "tasks/commitments still pending" }, { "heading": "## Carry Over to Next Week", "contains": "open loops to carry over (max 5) with one-line reason" }, { "heading": "## Next Week Focus", "contains": "top priorities for next week (max 3)" }, { "heading": "## Lessons for Next Week", "contains": "behavioral observation → action (max 3)" }] },
|
|
8
|
+
{ "path": "journal/monthly/*.md", "purpose": "monthly review snapshots (YYYY-MM)", "sections": [{ "heading": "## Theme", "contains": "the month's overall theme" }] },
|
|
9
|
+
{ "path": "policies/*.md", "purpose": "user-controlled policy files", "sections": [{ "heading": "## Why", "contains": "rationale for the rule" }, { "heading": "## How", "contains": "concrete rule shape" }] },
|
|
10
|
+
{ "path": "identity/*.md", "purpose": "user identity and preferences dictionary", "sections": [{ "heading": "## Identity", "contains": "name role tz" }] },
|
|
11
11
|
{ "path": "journal/agent.md", "purpose": "agent-owned weekly + monthly self-critique", "sections": [{ "heading": "## Weekly", "contains": "what worked, what slipped, improvements" }] }
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"kind": "frontmatter_schema",
|
|
3
3
|
"file_types": [
|
|
4
4
|
{
|
|
5
|
-
"glob": "projects/*.md",
|
|
5
|
+
"glob": "plans/projects/*.md",
|
|
6
6
|
"required": [
|
|
7
7
|
{ "key": "type", "type": "enum", "example": "project" },
|
|
8
8
|
{ "key": "owner", "type": "string", "example": "shared" },
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
]
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
|
-
"glob": "
|
|
22
|
+
"glob": "identity/*.md",
|
|
23
23
|
"required": [
|
|
24
24
|
{ "key": "type", "type": "enum", "example": "user" },
|
|
25
25
|
{ "key": "owner", "type": "string", "example": "shared" },
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"conventional": []
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
|
-
"glob": "
|
|
31
|
+
"glob": "policies/*.md",
|
|
32
32
|
"required": [
|
|
33
33
|
{ "key": "type", "type": "enum", "example": "rule" },
|
|
34
34
|
{ "key": "owner", "type": "string", "example": "shared" },
|
|
@@ -27,38 +27,24 @@ the FTS query in three steps:
|
|
|
27
27
|
|
|
28
28
|
1. **Extract the topic.** Strip interrogatives, particles, and meta
|
|
29
29
|
phrases. Keep only the noun phrase or technical term.
|
|
30
|
-
|
|
31
|
-
| Input | Topic |
|
|
32
|
-
|---|---|
|
|
33
|
-
| "what is delegated mode?" | `delegated mode` |
|
|
34
|
-
| "什么是 delegated 模式?" | `delegated模式` |
|
|
35
|
-
| "tell me about ProcessKey" | `ProcessKey` |
|
|
36
|
-
| "ProcessKey 是什么?" | `ProcessKey` |
|
|
37
|
-
| "how does the morning routine work?" | `morning routine` |
|
|
38
|
-
| "早晨例行公事是怎么运作的?" | `早晨例行公事` |
|
|
39
|
-
|
|
40
30
|
2. **Split at script boundaries.** If the topic mixes Latin and CJK
|
|
41
31
|
without spaces, insert a space at every Latin↔CJK boundary. FTS5
|
|
42
32
|
quotes each whitespace-separated token as a phrase before
|
|
43
33
|
AND-joining; an unsplit `delegated模式` becomes one unmatchable
|
|
44
34
|
trigram phrase.
|
|
45
|
-
|
|
46
|
-
| Input | Split |
|
|
47
|
-
|---|---|
|
|
48
|
-
| `delegated模式` | `delegated 模式` |
|
|
49
|
-
| `ProcessKey列表` | `ProcessKey 列表` |
|
|
50
|
-
|
|
51
35
|
3. **Latin wins.** If the split topic contains both Latin and CJK
|
|
52
|
-
tokens, drop the CJK tokens
|
|
53
|
-
operator's gloss, not the indexed term. Pure-CJK topics
|
|
54
|
-
|
|
55
|
-
|
|
36
|
+
tokens, drop the CJK tokens — the corpus is English; CJK is the
|
|
37
|
+
operator's gloss, not the indexed term. Pure-CJK topics pass through
|
|
38
|
+
unchanged (and may legitimately miss until bilingual aliases land —
|
|
39
|
+
see "When you cannot find an answer" below).
|
|
56
40
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
41
|
+
| Input | Final query |
|
|
42
|
+
|---|---|
|
|
43
|
+
| "what is delegated mode?" | `delegated` |
|
|
44
|
+
| "什么是 delegated 模式?" | `delegated` |
|
|
45
|
+
| "ProcessKey 是什么?" | `ProcessKey` |
|
|
46
|
+
| "how does the morning routine work?" | `morning routine` |
|
|
47
|
+
| "早晨例行公事是怎么运作的?" | `早晨例行公事` (passes through; may miss) |
|
|
62
48
|
|
|
63
49
|
## Endpoints
|
|
64
50
|
|
|
@@ -87,18 +73,20 @@ must not exceed 3. Quality rule, not a daemon-enforced cap.
|
|
|
87
73
|
2. **Call 2 (optional).** If 0 hits and a Latin synonym is obvious,
|
|
88
74
|
retry `term-search` with the synonym. Otherwise fall back to
|
|
89
75
|
`search` with the same topic.
|
|
90
|
-
3. **Call 3 (rare).** Broaden — strip qualifiers, or
|
|
91
|
-
|
|
76
|
+
3. **Call 3 (rare).** Broaden — strip qualifiers, or narrow with
|
|
77
|
+
`&category=` (both endpoints) or, on `search` only, `&tag=`.
|
|
92
78
|
|
|
93
79
|
If three calls do not surface an answer, stop and tell the operator the
|
|
94
80
|
docs do not cover their question.
|
|
95
81
|
|
|
96
82
|
## Search query syntax
|
|
97
83
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
are
|
|
84
|
+
`q` is **not** a raw FTS5 query. The daemon tokenizes it on whitespace,
|
|
85
|
+
wraps each token in quotes as a literal phrase, and AND-joins them, so
|
|
86
|
+
every term is required. Wildcards (`day*`), booleans (`AND`/`OR`/`NOT`),
|
|
87
|
+
and your own quotes are searched as literal text, not as operators —
|
|
88
|
+
multi-word queries are already implicit-AND across all tokens. Just send
|
|
89
|
+
space-separated terms. The bm25 weights already boost
|
|
102
90
|
title/keywords/aliases over body, so a one-word query against a doc's
|
|
103
91
|
`title` or `keywords` is typically the right first move.
|
|
104
92
|
|
|
@@ -128,7 +128,7 @@ curl -s -X POST http://localhost:8321/api/integrations/google_calendar/exec \
|
|
|
128
128
|
`needsConfirmation` plan, or skip the dance for self-only events you
|
|
129
129
|
already greenlit.)
|
|
130
130
|
|
|
131
|
-
`outputSchema` is **required** (4 KB cap). Defaults: `maxToolCalls=
|
|
131
|
+
`outputSchema` is **required** (4 KB cap). Defaults: `maxToolCalls=8`,
|
|
132
132
|
`maxBudgetUsd=0.05`, `timeoutMs=60000`. Bump up to 15 / 0.50 / 300000
|
|
133
133
|
for genuinely larger intents.
|
|
134
134
|
|
|
@@ -176,32 +176,7 @@ freshness matters, and never on a destructive-confirm second call.
|
|
|
176
176
|
know about, call `POST /api/notify` with a one-line summary. The
|
|
177
177
|
daemon does NOT auto-notify — it's an explicit choice.
|
|
178
178
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
`/exec` extends the direct-mode envelope with delegated-mode fields.
|
|
182
|
-
Discriminator: `body.mode === "delegated"`.
|
|
183
|
-
|
|
184
|
-
| HTTP | `error` | retry? | What to do |
|
|
185
|
-
|---|---|---|---|
|
|
186
|
-
| 400 | `validation_error` / `schema_too_large` | no | Fix the request body. |
|
|
187
|
-
| 409 | `mode_mismatch` | no | Calendar isn't delegated, OR your DM backend matches `delegatedBackend`. Re-read `integrations.md` and stop. |
|
|
188
|
-
| 409 | `precondition` | no | Mode/backend flipped during the queue wait. Re-check state and re-plan. |
|
|
189
|
-
| 429 | `task_quota_exhausted` | no | Daily cap reached; wait or surface. |
|
|
190
|
-
| 502 | `parse_error` / `schema_violation` | no (daemon already retried once) | Consider a simpler schema. |
|
|
191
|
-
| 502 | `tool_unavailable` | no | No connector tool fits the intent. Surface the gap. |
|
|
192
|
-
| 502 | `tool_failed` | maybe | Connector tool returned an error. Surface `body.message` verbatim; retry only if clearly transient. |
|
|
193
|
-
| 502 | `auth_error` | no | Connector signed out. Tell the user to re-authenticate it. |
|
|
194
|
-
| 502 | `policy_violation` | no | Subprocess attempted a tool outside the per-task allowlist (anti-injection). |
|
|
195
|
-
| 502 | `loop_aborted` | no | `maxToolCalls` exceeded. Bump the cap or simplify. |
|
|
196
|
-
| 502 | `budget_exhausted` | no | `maxBudgetUsd` exceeded. Caller can raise the cap. |
|
|
197
|
-
| 502 | `post_write_format_failure` | no | Write succeeded; formatting failed. Side effect is real — surface with the partial trace. |
|
|
198
|
-
| 503 | `delegated_proxy_busy` | yes | Daemon queue saturated. Backoff a few seconds, try once. |
|
|
199
|
-
| 503 | `task_mode_disabled` | no | Operator turned the kill switch off. Stop. |
|
|
200
|
-
| 504 | `timeout` | yes (1×) | Wall-clock fired. Retry once if intent was simple. |
|
|
201
|
-
| 500 | `subprocess_crashed` | no | Unhandled exception inside the subprocess. Surface and stop. |
|
|
202
|
-
|
|
203
|
-
Always preserve `body.message` verbatim when reporting to the user — it
|
|
204
|
-
carries the connector's own language.
|
|
179
|
+
{{> ref:exec-errors }}
|
|
205
180
|
<!-- /service:calendar -->
|
|
206
181
|
|
|
207
182
|
---
|
|
@@ -286,72 +261,10 @@ existing rows (dedup). → Full guide: load the `agent-create` or `schedule` ski
|
|
|
286
261
|
|
|
287
262
|
---
|
|
288
263
|
|
|
289
|
-
##
|
|
264
|
+
## Scheduling & Skills CRUD
|
|
290
265
|
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|---|---|---|
|
|
297
|
-
| Message text knowable now? | Yes | No — needs lookup/decision at execution |
|
|
298
|
-
| Needs API data at execution? | No | Yes |
|
|
299
|
-
| Multi-step action? | No | Yes |
|
|
300
|
-
| Conditional on state that may change? | No | Yes |
|
|
301
|
-
|
|
302
|
-
**Default to DM** — every agent wake-up costs money and context.
|
|
303
|
-
|
|
304
|
-
### Context-loss warning
|
|
305
|
-
|
|
306
|
-
> The wake-up agent has NO memory of why it was scheduled — the `description` field is its only context.
|
|
307
|
-
|
|
308
|
-
Include: **What** (verb + object), **Why** (trigger/reason), **Who/What** (names, IDs, URLs), **Expected output** (what success looks like).
|
|
309
|
-
|
|
310
|
-
Bad: `"Meeting prep"` — which meeting? when? what to prepare? The wake-up agent will skip ambiguous descriptions.
|
|
311
|
-
|
|
312
|
-
### POST /api/schedule/dm — Pre-composed DM
|
|
313
|
-
```bash
|
|
314
|
-
curl -s -X POST http://localhost:8321/api/schedule/dm \
|
|
315
|
-
-H 'Content-Type: application/json' \
|
|
316
|
-
-d '{"time": "2026-04-06T16:00:00-04:00", "message": "Reminder: Design review in 30 min.", "platform": "slack"}'
|
|
317
|
-
```
|
|
318
|
-
|
|
319
|
-
### POST /api/schedule — Agent task
|
|
320
|
-
```bash
|
|
321
|
-
curl -s -X POST http://localhost:8321/api/schedule \
|
|
322
|
-
-H 'Content-Type: application/json' \
|
|
323
|
-
-d '{"time": "2026-04-06T16:00:00-04:00", "taskType": "wake", "prompt": "Check PR #42 status and notify user.", "description": "PR #42 status check", "tier": "medium", "taskContext": {"scheduledBy": "dm_conversation"}}'
|
|
324
|
-
```
|
|
325
|
-
Fields: `time` (required), `taskType` (`wake`), `prompt` (required — the agent instruction, ≤8000 chars), `description` (optional label, ≤200 chars), `tier` (`lite`/`medium`/`high`) **or** `model` (registered id like `claude-opus-4-8`, legacy alias `sonnet`/`opus`, or composite `<backendId>/<modelId>`) — mutually exclusive, `taskContext` (optional metadata). See the `schedule` skill body for the full surface and `/api/schedule/options` for the live model list.
|
|
326
|
-
|
|
327
|
-
### Manage pending items
|
|
328
|
-
```bash
|
|
329
|
-
curl -s "http://localhost:8321/api/schedule?status=pending" # list
|
|
330
|
-
curl -s -X PATCH http://localhost:8321/api/schedule/42 \
|
|
331
|
-
-H 'Content-Type: application/json' -d '{"time": "2026-04-06T17:00:00-04:00"}' # edit
|
|
332
|
-
curl -s -X DELETE http://localhost:8321/api/schedule/42 # cancel
|
|
333
|
-
```
|
|
334
|
-
Editable: `time`, `description`, `message` (dm only), `tier` (or `model`, mutually exclusive — pass `null` to clear), `taskContext`. Only `pending` items.
|
|
335
|
-
|
|
336
|
-
### Time discipline
|
|
337
|
-
- Absolute ISO 8601 with offset required — no relative times.
|
|
338
|
-
- Do not schedule during quiet hours (default 22:00–08:00, configurable) unless critical.
|
|
339
|
-
- Maximum 5 wake-ups per execution.
|
|
340
|
-
|
|
341
|
-
---
|
|
342
|
-
|
|
343
|
-
## Skills Management
|
|
344
|
-
|
|
345
|
-
User-authored skills: `~/.personal-agent/skills/{slug}/SKILL.md`. Built-in skills are read-only (403). Slug: lowercase kebab-case `[a-z0-9][a-z0-9-]*`, 1–64 chars.
|
|
346
|
-
|
|
347
|
-
```bash
|
|
348
|
-
curl -s http://localhost:8321/api/skills # list all
|
|
349
|
-
curl -s http://localhost:8321/api/skills/todo-digest # read one
|
|
350
|
-
curl -s -X POST http://localhost:8321/api/skills \
|
|
351
|
-
-H 'Content-Type: application/json' \
|
|
352
|
-
-d '{"name": "todo-digest", "description": "Summarize today.md", "content": "# TODO Digest\n...", "allowedTools": ["Bash(curl *)", "Read"]}'
|
|
353
|
-
curl -s -X PUT http://localhost:8321/api/skills/todo-digest \
|
|
354
|
-
-H 'Content-Type: application/json' -d '{"description": "New description"}' # update
|
|
355
|
-
curl -s -X DELETE http://localhost:8321/api/skills/todo-digest # delete
|
|
356
|
-
```
|
|
357
|
-
Always `GET /api/skills` before creating (check name collisions). **Omit frontmatter** from `content` — the API injects it.
|
|
266
|
+
One-shot DMs / agent wake-ups (`/api/schedule`, `/api/schedule/dm`) and
|
|
267
|
+
user-authored Skills CRUD (`/api/skills`) work identically to direct
|
|
268
|
+
mode — they are never proxied. Load the `schedule` skill for scheduling
|
|
269
|
+
and the `agent-create` skill for recurring work; this variant does not
|
|
270
|
+
mirror those surfaces.
|