dotai-cli 0.5.0__tar.gz → 0.6.0__tar.gz
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.
- dotai_cli-0.6.0/CHANGELOG.md +34 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/PKG-INFO +130 -162
- dotai_cli-0.6.0/PRODUCT.md +93 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/README.md +128 -159
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/pyproject.toml +2 -3
- dotai_cli-0.6.0/src/dotai/__init__.py +3 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/cli/__init__.py +21 -12
- dotai_cli-0.6.0/src/dotai/cli/insights_cmd.py +85 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/cli/prefs_cmd.py +5 -3
- dotai_cli-0.6.0/src/dotai/cli/roles_cmd.py +30 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/cli/rules_cmd.py +44 -42
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/cli/skills_cmd.py +5 -129
- dotai_cli-0.6.0/src/dotai/cli/sync_cmd.py +201 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/context.py +20 -1
- dotai_cli-0.6.0/src/dotai/insights.py +194 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/models.py +0 -113
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/roles.py +1 -25
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/rules.py +60 -25
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/learn.md +10 -9
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/skills.py +1 -33
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/store.py +2 -22
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/sync.py +18 -129
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_context.py +4 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_import_agent.py +26 -0
- dotai_cli-0.6.0/tests/test_insights.py +73 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_models.py +0 -52
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_store.py +1 -31
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_sync.py +14 -112
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/uv.lock +1 -30
- dotai_cli-0.5.0/src/dotai/__init__.py +0 -3
- dotai_cli-0.5.0/src/dotai/cli/roles_cmd.py +0 -62
- dotai_cli-0.5.0/src/dotai/cli/sync_cmd.py +0 -349
- dotai_cli-0.5.0/src/dotai/cli/watch_cmd.py +0 -120
- dotai_cli-0.5.0/src/dotai/indexer.py +0 -201
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/.github/workflows/ci.yml +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/.github/workflows/publish.yml +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/.gitignore +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/LICENSE +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/rdc.yaml +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/__main__.py +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/agents.py +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/cli/__main__.py +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/cli/agents_cmd.py +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/converter.py +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/import_agent.py +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/maintenance.py +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/preferences.py +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/roles/architect.md +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/roles/debugger.md +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/roles/founder.md +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/roles/mentor.md +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/roles/product-manager.md +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/roles/qa.md +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/roles/reviewer.md +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/roles/security.md +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/roles/ship.md +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/roles/writer.md +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/careful.md +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/commit-helper.md +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/compress.md +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/context-dump.md +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/investigate.md +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/parallel-work.md +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/plan.md +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/review.md +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/scaffold.md +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/ship.md +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/techdebt.md +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/verify.md +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/tools/__init__.py +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/tools/base.py +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/tools/registry.py +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/utils.py +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/vet.py +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/__init__.py +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/conftest.py +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_agents.py +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_converter.py +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_maintenance.py +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_preferences.py +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_roles.py +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_rules.py +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_skills.py +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_utils.py +0 -0
- {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_vet.py +0 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.6.0 — 2026-07-17
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- `dotai learn --directive` for proactive engineering standards, taste, and
|
|
8
|
+
guardrails without requiring a prior mistake.
|
|
9
|
+
- `dotai insights` for deterministic local delivery evidence: resolution health,
|
|
10
|
+
selection counts, last use, rule-summary exposure, and unused knowledge.
|
|
11
|
+
- Bounded metadata-only receipt history, retaining the latest 500 resolutions
|
|
12
|
+
per agent.
|
|
13
|
+
- `PRODUCT.md` defining dotai as portable engineering judgment for coding agents.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- Repositioned the CLI and documentation around developer-controlled engineering
|
|
18
|
+
judgment rather than universal context.
|
|
19
|
+
- `dotai sync` now has one repository-safe behavior: local context outside the
|
|
20
|
+
worktree.
|
|
21
|
+
- `dotai primer` now always emits the compact bootstrap.
|
|
22
|
+
- `dotai search` reads live knowledge instead of a cached index.
|
|
23
|
+
- `dotai install` is the single entry point for supported external skill formats.
|
|
24
|
+
|
|
25
|
+
### Removed
|
|
26
|
+
|
|
27
|
+
- Commands: `watch`, `detach`, `index`, `tree`, `prompt`, `role`, `convert`, and
|
|
28
|
+
`import-plugin`.
|
|
29
|
+
- Shared/full/agent-specific sync controls and primer session overlays.
|
|
30
|
+
- Freeform `dotai learn --append-md` capture.
|
|
31
|
+
- The cached knowledge-tree model and `watchdog` dependency.
|
|
32
|
+
|
|
33
|
+
This release intentionally breaks pre-1.0 CLI compatibility to keep one clear,
|
|
34
|
+
local-first product path.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dotai-cli
|
|
3
|
-
Version: 0.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 0.6.0
|
|
4
|
+
Summary: Portable engineering judgment for coding agents
|
|
5
5
|
Project-URL: Homepage, https://github.com/dawalama/dotai
|
|
6
6
|
Project-URL: Repository, https://github.com/dawalama/dotai
|
|
7
7
|
Project-URL: Issues, https://github.com/dawalama/dotai/issues
|
|
@@ -22,69 +22,89 @@ Requires-Dist: ai-skill-audit>=0.5.1
|
|
|
22
22
|
Requires-Dist: pydantic>=2.0
|
|
23
23
|
Requires-Dist: rich>=13.0
|
|
24
24
|
Requires-Dist: typer>=0.9
|
|
25
|
-
Requires-Dist: watchdog>=4.0
|
|
26
25
|
Provides-Extra: dev
|
|
27
26
|
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
28
27
|
Description-Content-Type: text/markdown
|
|
29
28
|
|
|
30
29
|
# dotai
|
|
31
30
|
|
|
32
|
-
**
|
|
31
|
+
**Portable engineering judgment for coding agents.**
|
|
33
32
|
|
|
34
|
-
dotai
|
|
33
|
+
dotai teaches Claude, Cursor, Gemini, Codex, and other coding agents how you build software. Keep your standards, workflows, guardrails, and engineering taste in `~/.ai/`; dotai applies only the judgment each task needs without taking ownership of team files.
|
|
35
34
|
|
|
36
35
|
```text
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
└─ AGENTS.md
|
|
36
|
+
~/.ai/ ── dotai context ── relevant rules + skill + role + preferences
|
|
37
|
+
│
|
|
38
|
+
└──── dotai sync ────── local context cache (outside Git repositories)
|
|
41
39
|
```
|
|
42
40
|
|
|
43
|
-
|
|
41
|
+
Teach it once. Apply it when relevant. Know what influenced the agent. No server, account, or proprietary memory layer—just portable Markdown that you own.
|
|
44
42
|
|
|
45
|
-
##
|
|
43
|
+
## The short version
|
|
46
44
|
|
|
47
|
-
You
|
|
45
|
+
| You want to… | Use |
|
|
46
|
+
|---|---|
|
|
47
|
+
| Teach agents a standard, taste, or guardrail | `dotai learn --directive` |
|
|
48
|
+
| Use dotai automatically in Claude Code | `dotai agent setup claude --apply` |
|
|
49
|
+
| See what Claude actually loaded | `dotai agent last claude` |
|
|
50
|
+
| Resolve context manually or from automation | `dotai context` |
|
|
51
|
+
| Prepare a safe per-repository cache | `dotai sync` |
|
|
48
52
|
|
|
49
|
-
|
|
53
|
+
The default is personal and repository-safe. Team instructions stay authoritative.
|
|
50
54
|
|
|
51
|
-
|
|
55
|
+
## Make every agent work like yours
|
|
56
|
+
|
|
57
|
+
You prefer derived state over synchronization effects. You reproduce bugs before fixing them. You never allow credentials in logs. These are different kinds of judgment, but they all shape how you build software—and they should not disappear when you change agents.
|
|
58
|
+
|
|
59
|
+
dotai turns that judgment into durable, reusable instructions:
|
|
60
|
+
|
|
61
|
+
- **Rules codify decisions.** Capture standards, architectural taste, safety boundaries, and compliance requirements; scope them by project or file pattern.
|
|
52
62
|
- **Skills are repeatable workflows.** Plan, investigate, review, verify, and ship the same way every time.
|
|
53
63
|
- **Roles change how the agent thinks.** Review as a security engineer; plan as a product manager.
|
|
54
64
|
- **Preference packs carry your taste.** Share softer choices without weakening hard rules.
|
|
55
|
-
- **
|
|
65
|
+
- **Adapters fit normal workflows.** Configure an agent once, then ask naturally while dotai resolves context behind the scenes.
|
|
56
66
|
|
|
57
|
-
|
|
67
|
+
Rules can be proactive or learned from a correction:
|
|
58
68
|
|
|
59
69
|
```text
|
|
60
|
-
|
|
70
|
+
teach a standard ───────────────┐
|
|
71
|
+
├─→ approve → resolve when relevant → verify what loaded
|
|
72
|
+
correct an agent → keep lesson ┘
|
|
61
73
|
```
|
|
62
74
|
|
|
75
|
+
dotai is deliberately not an autonomous history of every conversation. It is the small, developer-approved part of memory important enough to be explicit, portable, scoped, and auditable.
|
|
76
|
+
|
|
63
77
|
## See it in action
|
|
64
78
|
|
|
65
79
|
```bash
|
|
66
80
|
# Set up your global knowledge base
|
|
67
81
|
dotai init
|
|
68
82
|
|
|
69
|
-
# Teach every agent
|
|
70
|
-
dotai learn "no-
|
|
71
|
-
--
|
|
72
|
-
--
|
|
73
|
-
--
|
|
83
|
+
# Teach every agent an engineering preference
|
|
84
|
+
dotai learn "no-useeffect" \
|
|
85
|
+
--directive "Never call useEffect directly; prefer declarative alternatives" \
|
|
86
|
+
--globs "*.tsx,*.ts" \
|
|
87
|
+
--tags "react,taste"
|
|
74
88
|
|
|
75
89
|
# Prepare that knowledge for the current project
|
|
76
90
|
cd ~/my-project
|
|
77
91
|
dotai sync
|
|
78
92
|
```
|
|
79
93
|
|
|
80
|
-
|
|
94
|
+
For automatic delivery in Claude Code, configure the user-level adapter once:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
dotai agent setup claude
|
|
98
|
+
dotai agent setup claude --apply
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Then ask naturally. dotai routes unambiguous workflows and expands matching file-scoped rules:
|
|
81
102
|
|
|
82
103
|
```text
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
/run_ship
|
|
104
|
+
Plan this feature as a product manager.
|
|
105
|
+
Investigate this failure.
|
|
106
|
+
Review the authentication changes.
|
|
107
|
+
Verify the pending changes.
|
|
88
108
|
```
|
|
89
109
|
|
|
90
110
|
## Installation
|
|
@@ -126,9 +146,9 @@ cd ~/my-project
|
|
|
126
146
|
dotai sync
|
|
127
147
|
```
|
|
128
148
|
|
|
129
|
-
|
|
149
|
+
`dotai sync` always writes personal context under `~/.config/dotai/contexts/` and leaves team-owned files such as `CLAUDE.md`, `AGENTS.md`, and `.claude/skills/` untouched. Existing repository instructions are copied into the local context as the authoritative layer; personal dotai rules and preferences are explicitly supplemental.
|
|
130
150
|
|
|
131
|
-
Local context storage does not, by itself, make an agent load the context. Until an agent adapter is configured, use `dotai primer --path .` to print
|
|
151
|
+
Local context storage does not, by itself, make an agent load the context. Until an agent adapter is configured, use `dotai primer --path .` to print a compact bootstrap for pasting or piping into your agent.
|
|
132
152
|
|
|
133
153
|
dotai uses progressive disclosure to keep prompts small. Synced context contains rule summaries and role/skill catalogs. Expand only what a task needs:
|
|
134
154
|
|
|
@@ -192,22 +212,40 @@ memory under `~/.config/dotai/backups/agents/claude/`.
|
|
|
192
212
|
adapter invokes the resolver. It reports selection metadata and reasons, but
|
|
193
213
|
never stores source contents, expanded prompts, credentials, or telemetry.
|
|
194
214
|
|
|
195
|
-
###
|
|
215
|
+
### Understanding what dotai delivered
|
|
196
216
|
|
|
197
|
-
|
|
198
|
-
|
|
217
|
+
`dotai insights` aggregates local resolution receipts so you can see whether
|
|
218
|
+
your engineering judgment is actually being selected:
|
|
199
219
|
|
|
200
220
|
```bash
|
|
201
|
-
dotai
|
|
202
|
-
dotai
|
|
221
|
+
dotai insights
|
|
222
|
+
dotai insights --agent claude
|
|
223
|
+
dotai insights --project my-app
|
|
224
|
+
dotai insights --json
|
|
203
225
|
```
|
|
204
226
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
227
|
+
The report shows complete versus provisional resolutions, selection counts,
|
|
228
|
+
last-selected timestamps, universal rule-summary exposure, and enabled items
|
|
229
|
+
that have never been selected in the current window. Selection proves delivery,
|
|
230
|
+
not compliance: dotai cannot claim that an agent followed an instruction merely
|
|
231
|
+
because it received it.
|
|
232
|
+
|
|
233
|
+
History contains metadata only and is stored under
|
|
234
|
+
`~/.config/dotai/receipts/history/`. It never includes expanded bodies, prompts,
|
|
235
|
+
source contents, or credentials. History is bounded to the latest 500 receipts
|
|
236
|
+
per agent and never leaves the machine.
|
|
237
|
+
|
|
238
|
+
If no receipt appears, refresh the adapter and start a new Claude Code session:
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
dotai agent setup claude --apply
|
|
242
|
+
dotai agent status claude
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
Setup pins the dotai executable used to install the adapter, avoiding an older
|
|
246
|
+
`dotai` elsewhere on `PATH`. Receipt persistence is best-effort: if its local
|
|
247
|
+
directory is unavailable, Claude still receives resolved context and dotai emits
|
|
248
|
+
a warning instead of blocking the task.
|
|
211
249
|
|
|
212
250
|
## Usage
|
|
213
251
|
|
|
@@ -218,16 +256,18 @@ of routine sync and does not need to be run again after migration.
|
|
|
218
256
|
cd ~/my-project
|
|
219
257
|
dotai sync
|
|
220
258
|
|
|
221
|
-
# Or leave it running — auto-resyncs when you edit ~/.ai/ files
|
|
222
|
-
dotai watch
|
|
223
|
-
|
|
224
259
|
# Print the context for an agent that does not yet have a dotai adapter
|
|
225
260
|
dotai primer --path .
|
|
226
261
|
```
|
|
227
262
|
|
|
263
|
+
With the Claude adapter installed, daily use is simpler: open Claude Code and
|
|
264
|
+
ask for the work normally. Claude invokes the pinned dotai executable, resolves
|
|
265
|
+
the workflow, and resolves again with affected files when file-scoped rules may
|
|
266
|
+
apply. Use `dotai agent last claude` whenever you want to verify delivery.
|
|
267
|
+
|
|
228
268
|
### Using skills in Claude Code
|
|
229
269
|
|
|
230
|
-
|
|
270
|
+
Natural-language routing is recommended with the personal adapter:
|
|
231
271
|
|
|
232
272
|
```
|
|
233
273
|
> /run_plan # Plan before coding
|
|
@@ -245,31 +285,32 @@ After an explicit shared Claude sync (`dotai sync --shared --agents claude`), sk
|
|
|
245
285
|
|
|
246
286
|
### Using skills outside Claude Code
|
|
247
287
|
|
|
248
|
-
|
|
288
|
+
Resolve a skill and its role through the same context engine used by adapters:
|
|
249
289
|
|
|
250
290
|
```bash
|
|
251
|
-
|
|
252
|
-
dotai prompt review --role paranoid-reviewer | pbcopy
|
|
253
|
-
|
|
254
|
-
# Save to a file
|
|
255
|
-
dotai prompt ship > /tmp/ship-prompt.md
|
|
291
|
+
dotai context --path . --skill run_review --role paranoid-reviewer
|
|
256
292
|
|
|
257
293
|
# List skills filtered by category
|
|
258
294
|
dotai skills --category deployment
|
|
259
295
|
```
|
|
260
296
|
|
|
261
|
-
###
|
|
297
|
+
### Teaching your engineering judgment
|
|
262
298
|
|
|
263
|
-
`dotai learn` creates a **structured rule file** in `~/.ai/rules/` by default
|
|
299
|
+
`dotai learn` creates a **structured rule file** in `~/.ai/rules/` by default. Use a directive for a standard you already hold; use an issue and correction when an agent interaction teaches you something new.
|
|
264
300
|
|
|
265
301
|
```bash
|
|
302
|
+
# Proactively encode engineering taste or a guardrail
|
|
303
|
+
dotai learn "no-useeffect" \
|
|
304
|
+
--directive "Never call useEffect directly; prefer declarative alternatives" \
|
|
305
|
+
--globs "*.tsx,*.ts"
|
|
306
|
+
|
|
266
307
|
# Preview the rule without writing
|
|
267
308
|
dotai learn "auth-header" \
|
|
268
309
|
--issue "Forgot Bearer prefix on API token" \
|
|
269
310
|
--correction "Always prepend 'Bearer ' to auth tokens" \
|
|
270
311
|
--dry-run
|
|
271
312
|
|
|
272
|
-
# Save structured rule
|
|
313
|
+
# Save a structured rule and refresh local context
|
|
273
314
|
dotai learn "auth-header" \
|
|
274
315
|
-i "Forgot Bearer prefix on API token" \
|
|
275
316
|
-c "Always prepend 'Bearer ' to auth tokens" \
|
|
@@ -278,11 +319,8 @@ dotai learn "auth-header" \
|
|
|
278
319
|
# Import a detailed rule from a file
|
|
279
320
|
dotai learn "no-useEffect" --from-file react-rules.md --globs "*.tsx,*.ts"
|
|
280
321
|
|
|
281
|
-
#
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
# Or let the agent do it — /run_learn reviews the session and proposes a rule
|
|
285
|
-
> /run_learn
|
|
322
|
+
# Or ask an adapted agent naturally
|
|
323
|
+
> Capture what we learned as a rule.
|
|
286
324
|
|
|
287
325
|
# Disable a rule for one legacy project
|
|
288
326
|
dotai toggle no-useeffect --off --project legacy-app
|
|
@@ -291,7 +329,7 @@ dotai toggle no-useeffect --off --project legacy-app
|
|
|
291
329
|
dotai rules --check
|
|
292
330
|
```
|
|
293
331
|
|
|
294
|
-
The
|
|
332
|
+
The loop: **teach or correct → review the structured rule → dotai resolves it for the next matching task → inspect what loaded.**
|
|
295
333
|
|
|
296
334
|
### Keeping rules healthy
|
|
297
335
|
|
|
@@ -315,14 +353,14 @@ The report includes stable finding codes, evidence, suggested actions, an estima
|
|
|
315
353
|
# Inspect candidates
|
|
316
354
|
dotai compress
|
|
317
355
|
|
|
318
|
-
# Ask
|
|
319
|
-
>
|
|
356
|
+
# Ask an adapted coding agent to use the compression workflow
|
|
357
|
+
> Compress and audit my dotai rules.
|
|
320
358
|
|
|
321
359
|
# Low-level application boundary for an approved versioned proposal
|
|
322
360
|
dotai compress apply proposal.json
|
|
323
361
|
```
|
|
324
362
|
|
|
325
|
-
|
|
363
|
+
The compression skill reads the JSON plan, drafts shorter complete rules, explains what it preserved and consolidated, shows the full diff in conversation, and asks `Apply this compression? [y/N]`. It then passes only approved changes to dotai. Near-duplicates, generic guidance, and rules that may belong in a preference pack remain suggestions unless the developer explicitly approves a concrete proposal.
|
|
326
364
|
|
|
327
365
|
When no exact duplicates exist, compression says there are no **safe automatic** savings while still listing semantic review candidates and their estimated savings. These estimates are directional—they help prioritize review. The CLI never invents a semantic rewrite or calls an external provider.
|
|
328
366
|
|
|
@@ -369,10 +407,6 @@ dotai prefs pull ./design-eng-taste.md --name design-eng --domain design
|
|
|
369
407
|
dotai prefs pull https://github.com/org/taste-packs -n cli
|
|
370
408
|
dotai prefs use design-eng
|
|
371
409
|
|
|
372
|
-
# Session overlay without changing active list
|
|
373
|
-
dotai sync --with-prefs design-eng,cli
|
|
374
|
-
dotai primer --with-prefs design-eng
|
|
375
|
-
|
|
376
410
|
# List / show / deactivate
|
|
377
411
|
dotai prefs
|
|
378
412
|
dotai prefs show cli-conventions
|
|
@@ -524,7 +558,7 @@ All skill triggers use the `run_` prefix to avoid collisions with built-in agent
|
|
|
524
558
|
| Scaffold | `/run_scaffold` | Generate boilerplate from patterns |
|
|
525
559
|
| Verify | `/run_verify` | Run tests, types, lint, build |
|
|
526
560
|
| Plan | `/run_plan` | Structured planning before coding |
|
|
527
|
-
| Learn | `/run_learn` | Capture
|
|
561
|
+
| Learn | `/run_learn` | Capture engineering judgment as structured rules |
|
|
528
562
|
|
|
529
563
|
### Skill Format
|
|
530
564
|
|
|
@@ -615,7 +649,8 @@ Skills reference roles by ID — when a skill runs, the role's full persona is i
|
|
|
615
649
|
|
|
616
650
|
### Composing Skills with Roles
|
|
617
651
|
|
|
618
|
-
|
|
652
|
+
Ask for a perspective naturally through an adapter, or resolve it explicitly
|
|
653
|
+
with `dotai context --skill <skill> --role <role>`.
|
|
619
654
|
|
|
620
655
|
```
|
|
621
656
|
/run_plan as product-manager # Scope a feature with acceptance criteria
|
|
@@ -627,12 +662,7 @@ Skills and roles can be composed inline. Pass `as <role>` to run any skill with
|
|
|
627
662
|
/run_review # Uses the skill's default role, or none
|
|
628
663
|
```
|
|
629
664
|
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
```bash
|
|
633
|
-
dotai prompt review --role paranoid-reviewer | pbcopy
|
|
634
|
-
dotai prompt review --role qa > /tmp/prompt.md
|
|
635
|
-
```
|
|
665
|
+
The resolver expands the role and skill together and records why each was selected.
|
|
636
666
|
|
|
637
667
|
## Rules
|
|
638
668
|
|
|
@@ -682,60 +712,36 @@ dotai toggle no-useeffect --off --project my-legacy-app
|
|
|
682
712
|
dotai toggle no-useeffect --on
|
|
683
713
|
```
|
|
684
714
|
|
|
685
|
-
Synced
|
|
715
|
+
Synced local context contains a compact bootstrap: universal rule summaries plus preference, role, and skill catalogs. Use `dotai context` to expand relevant material on demand.
|
|
686
716
|
|
|
687
717
|
## Agent Sync
|
|
688
718
|
|
|
689
|
-
`dotai sync` prepares
|
|
719
|
+
`dotai sync` prepares repository-safe local context with:
|
|
690
720
|
|
|
691
721
|
- **Universal structured rule summaries** (always visible)
|
|
692
722
|
- **Pointers to freeform `rules.md` conventions**
|
|
693
723
|
- **Role and skill catalogs** (names, triggers, categories — not full workflows)
|
|
694
|
-
-
|
|
695
|
-
|
|
696
|
-
Use `--full` only when you need every role persona and skill definition dumped inline (larger context).
|
|
697
|
-
|
|
698
|
-
In a Git repository, local mode is the default and writes outside the worktree. Team instructions take precedence over personal dotai rules and preferences. dotai does not attempt unreliable keyword-based conflict resolution; the generated context tells the agent to ignore conflicting personal guidance and ask when a disagreement is ambiguous.
|
|
724
|
+
Context is always written outside the worktree. Team instructions take precedence over personal dotai rules and preferences. dotai does not attempt unreliable keyword-based conflict resolution; the generated context tells the agent to ignore conflicting personal guidance and ask when a disagreement is ambiguous.
|
|
699
725
|
|
|
700
726
|
```bash
|
|
701
|
-
#
|
|
727
|
+
# Generate outside the repository
|
|
702
728
|
dotai sync
|
|
703
729
|
|
|
704
730
|
# Preview the resolved mode and target without writing
|
|
705
731
|
dotai sync --check
|
|
706
732
|
|
|
707
|
-
# Explicit team-owned mode: update marked sections in repository files
|
|
708
|
-
dotai sync --shared
|
|
709
|
-
|
|
710
|
-
# Generate for specific agents
|
|
711
|
-
dotai sync --agents claude,cursor
|
|
712
|
-
dotai sync --agents gemini
|
|
713
|
-
|
|
714
|
-
# Legacy-style full dump (roles + skill definitions inline)
|
|
715
|
-
dotai sync --full
|
|
716
|
-
|
|
717
733
|
# Print primer to stdout (for piping)
|
|
718
734
|
dotai primer
|
|
719
735
|
dotai primer --path .
|
|
720
|
-
dotai primer --full
|
|
721
736
|
|
|
722
737
|
# Resolve task-specific context on demand
|
|
723
738
|
dotai context --path . --files src/app.tsx --context security
|
|
724
739
|
dotai context --path . --skill run_review
|
|
725
740
|
```
|
|
726
741
|
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|-------|-------------|--------------|-------|
|
|
731
|
-
| Claude Code | Local cache; shared: `CLAUDE.md` + `.claude/skills/` | `dotai sync --agents claude` | Team file is authoritative; shared mode uses marker-based merging |
|
|
732
|
-
| Cursor | `.cursorrules` | `dotai sync --agents cursor` | Compact bootstrap by default; full context with `--full` |
|
|
733
|
-
| Gemini CLI | `GEMINI.md` | `dotai sync --agents gemini` | Compact bootstrap; shared files are auto-discovered by Gemini CLI |
|
|
734
|
-
| Generic | `AGENTS.md` | `dotai sync --agents generic` | Compact bootstrap for agents that read `AGENTS.md` |
|
|
735
|
-
|
|
736
|
-
For Claude Code, `dotai sync` also generates `.claude/skills/<trigger>/SKILL.md` files. These register as native slash commands — they appear in autocomplete and work as real `/run_*` commands with role composition support built in.
|
|
737
|
-
|
|
738
|
-
> **Tip:** Run `dotai primer --full | pbcopy` to copy the complete context to your clipboard for pasting into an agent's system prompt.
|
|
742
|
+
Use an agent adapter for automatic delivery. For an agent without an adapter,
|
|
743
|
+
paste or pipe `dotai primer --path .`, then use `dotai context` for task-specific
|
|
744
|
+
expansion.
|
|
739
745
|
|
|
740
746
|
## Installing Skills
|
|
741
747
|
|
|
@@ -755,7 +761,8 @@ dotai install ~/my-skills/review
|
|
|
755
761
|
dotai install https://github.com/team/skills -p my-project
|
|
756
762
|
```
|
|
757
763
|
|
|
758
|
-
|
|
764
|
+
Installed skills are immediately available to `dotai context` and configured
|
|
765
|
+
agent adapters.
|
|
759
766
|
|
|
760
767
|
Refresh skills that were installed from a tracked source (team conventions repo):
|
|
761
768
|
|
|
@@ -766,49 +773,17 @@ dotai install --update -s mvp
|
|
|
766
773
|
|
|
767
774
|
Updates are staged and security-vetted before installation. A blocked or declined update leaves the existing skill unchanged. Multi-skill repositories refresh each recorded skill independently. `--skip-vet` is an explicit trust override and should only be used for a source you have reviewed.
|
|
768
775
|
|
|
769
|
-
###
|
|
770
|
-
|
|
771
|
-
If you have a Claude-native `SKILL.md` and want to convert it manually:
|
|
772
|
-
|
|
773
|
-
```bash
|
|
774
|
-
# Preview what would be converted
|
|
775
|
-
dotai convert /path/to/SKILL.md --dry-run
|
|
776
|
-
|
|
777
|
-
# Convert to global skills
|
|
778
|
-
dotai convert /path/to/SKILL.md
|
|
779
|
-
|
|
780
|
-
# Convert to a specific project
|
|
781
|
-
dotai convert /path/to/SKILL.md -p my-project
|
|
782
|
-
|
|
783
|
-
# Convert to a custom directory
|
|
784
|
-
dotai convert /path/to/skill-dir/ -o ~/my-skills/
|
|
785
|
-
```
|
|
786
|
-
|
|
787
|
-
The converter maps Claude-native fields (`compatibility`, `license`) to dotai format, auto-generates a `/run_*` trigger, and infers a category from the skill's name and description.
|
|
776
|
+
### Installing other skill formats
|
|
788
777
|
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
778
|
+
`dotai install` detects dotai skills, Claude-native `SKILL.md` files, Claude
|
|
779
|
+
plugins, Cursor plugins, and Gemini extensions. Supported skills and commands
|
|
780
|
+
are converted automatically:
|
|
792
781
|
|
|
793
782
|
```bash
|
|
794
|
-
|
|
795
|
-
dotai
|
|
796
|
-
dotai
|
|
797
|
-
|
|
798
|
-
# Import from a Cursor plugin
|
|
799
|
-
dotai import-plugin /path/to/cursor-plugin/
|
|
800
|
-
|
|
801
|
-
# Import from a Gemini CLI extension
|
|
802
|
-
dotai import-plugin /path/to/gemini-extension/
|
|
803
|
-
|
|
804
|
-
# Import only a specific skill from a plugin
|
|
805
|
-
dotai import-plugin /path/to/plugin/ -s review-code
|
|
806
|
-
|
|
807
|
-
# Also convert agents to dotai roles
|
|
808
|
-
dotai import-plugin /path/to/plugin/ --include-agents
|
|
809
|
-
|
|
810
|
-
# Also convert Cursor .mdc rules to dotai rules
|
|
811
|
-
dotai import-plugin /path/to/cursor-plugin/ --include-rules
|
|
783
|
+
dotai install /path/to/SKILL.md
|
|
784
|
+
dotai install /path/to/claude-plugin/
|
|
785
|
+
dotai install /path/to/cursor-plugin/
|
|
786
|
+
dotai install /path/to/gemini-extension/
|
|
812
787
|
```
|
|
813
788
|
|
|
814
789
|
Supported plugin formats:
|
|
@@ -816,7 +791,7 @@ Supported plugin formats:
|
|
|
816
791
|
- **Cursor plugins** — directories with `.cursor-plugin/plugin.json`
|
|
817
792
|
- **Gemini extensions** — directories with `gemini-extension.json`
|
|
818
793
|
|
|
819
|
-
|
|
794
|
+
Hooks and MCP server configurations remain tool-specific and are not installed.
|
|
820
795
|
|
|
821
796
|
### Removing skills
|
|
822
797
|
|
|
@@ -856,38 +831,31 @@ dotai new-skill "Deploy" -t /run_deploy -c deployment --folder
|
|
|
856
831
|
```bash
|
|
857
832
|
dotai init [project-path] # Initialize ~/.ai/ or project .ai/
|
|
858
833
|
dotai roles # List available roles
|
|
859
|
-
dotai role <name> # Output a role's full prompt to stdout
|
|
860
834
|
dotai skills [-c category] # List skills (optionally filter by category)
|
|
861
|
-
dotai
|
|
862
|
-
dotai sync [path] [--local|--shared] [--check] [--agents ...] [--full]
|
|
863
|
-
dotai detach [path] [--apply] # One-off removal of old shared-sync artifacts
|
|
835
|
+
dotai sync [path] [--check] # Refresh safe local context
|
|
864
836
|
dotai agent setup|status|last|remove claude [--apply] # User-level Claude delivery
|
|
865
|
-
dotai
|
|
837
|
+
dotai insights [--agent name] [-p project] [--json] # Local delivery evidence
|
|
838
|
+
dotai primer [--project <name>|--path <path>] # Compact generic bootstrap
|
|
866
839
|
dotai context --path <path> [--task ...] [--files ...] [--context ...] [--domain ...] [--skill ...]
|
|
867
840
|
dotai rules [-p project] [-a] [--check] # List rules (or audit quality)
|
|
868
841
|
dotai audit [-p project] [--json] [--fail-on severity] # Read-only rule audit
|
|
869
842
|
dotai compress [-p project] [--json] # Plan compression candidates
|
|
870
843
|
dotai compress apply <proposal.json> [--yes] # Validate, back up, and apply proposals
|
|
871
844
|
dotai toggle <rule-id> --on/--off # Enable/disable rules globally or per-project
|
|
872
|
-
dotai learn "title"
|
|
873
|
-
dotai learn "title" -i "..." -c "..."
|
|
845
|
+
dotai learn "title" --directive "..." # Teach a standard, taste, or guardrail
|
|
846
|
+
dotai learn "title" -i "..." -c "..." # Preserve a correction as a rule
|
|
847
|
+
dotai learn "title" -i "..." -c "..." --dry-run|--sync|--force
|
|
874
848
|
dotai learn "title" --from-file <f> # Import structured rule from a file
|
|
875
849
|
dotai import-agent <path> [-m mode] [--dry-run] # Non-destructive agent-file migration
|
|
876
850
|
dotai prefs [list|show|new|pull|use|unuse|remove] # Preference / taste packs
|
|
877
851
|
dotai prefs new "CLI" --domain cli # Create a soft style pack
|
|
878
852
|
dotai prefs pull <path|url> [-n id] # Borrow / install a pack
|
|
879
853
|
dotai prefs use <id> [-p project|--global] # Activate pack in an explicit scope
|
|
880
|
-
dotai sync --with-prefs a,b # Session overlay of preference packs
|
|
881
854
|
dotai install <source> [-s skill] # Install skills from git repo or local path
|
|
882
855
|
dotai install --update [-s skill] [--skip-vet] # Vetted refresh from recorded sources
|
|
883
|
-
dotai import-plugin <source> # Import from Claude/Cursor/Gemini plugin
|
|
884
856
|
dotai remove <skill> [-p project] # Remove an installed skill
|
|
885
|
-
dotai convert <path> [--dry-run] # Convert Claude-native SKILL.md to dotai format
|
|
886
857
|
dotai new-skill <name> [-t trigger] # Create a new skill from template
|
|
887
|
-
dotai
|
|
888
|
-
dotai search "query" [--type t] [--tag] # Search knowledge index
|
|
889
|
-
dotai index [--refresh] # Build/show knowledge index
|
|
890
|
-
dotai tree # Show knowledge tree
|
|
858
|
+
dotai search "query" [--type t] [--tag] # Search live knowledge
|
|
891
859
|
```
|
|
892
860
|
|
|
893
861
|
## Philosophy
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Product direction
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
dotai carries a developer's engineering judgment across coding agents.
|
|
6
|
+
|
|
7
|
+
Engineering judgment includes standards, architectural choices, personal taste,
|
|
8
|
+
safety and compliance guardrails, repeatable workflows, and lessons deliberately
|
|
9
|
+
retained from prior work.
|
|
10
|
+
|
|
11
|
+
> Teach it once. Apply it when relevant. Know what influenced the agent.
|
|
12
|
+
|
|
13
|
+
## User
|
|
14
|
+
|
|
15
|
+
The initial user is an individual developer who uses more than one coding agent,
|
|
16
|
+
works across multiple repositories, or cares enough about their development style
|
|
17
|
+
to make it explicit. They should not need a platform, team rollout, or hosted
|
|
18
|
+
memory service to get value.
|
|
19
|
+
|
|
20
|
+
## Product loop
|
|
21
|
+
|
|
22
|
+
1. **Capture** a standard, preference, workflow, or correction.
|
|
23
|
+
2. **Approve** what becomes durable developer knowledge.
|
|
24
|
+
3. **Resolve** the minimum relevant knowledge for a task and its affected files.
|
|
25
|
+
4. **Deliver** it through an adapter or explicit context command.
|
|
26
|
+
5. **Explain** what was selected and why.
|
|
27
|
+
6. **Audit** knowledge that is stale, conflicting, oversized, or ineffective.
|
|
28
|
+
7. **Retire** knowledge without losing control of its source or history.
|
|
29
|
+
|
|
30
|
+
## Product principles
|
|
31
|
+
|
|
32
|
+
1. **Developer-approved, never silently learned.** Agents may propose knowledge;
|
|
33
|
+
only the developer promotes it into durable context.
|
|
34
|
+
2. **Selective, not exhaustive.** Always-on context is a cost. Load the smallest
|
|
35
|
+
relevant set while keeping mandatory guardrails dependable.
|
|
36
|
+
3. **Explicit before inferred.** File scopes, tags, task aliases, and precedence
|
|
37
|
+
remain inspectable. Opaque semantic retrieval cannot be the only path for
|
|
38
|
+
security or compliance rules.
|
|
39
|
+
4. **Team instructions remain authoritative.** Personal judgment supplements a
|
|
40
|
+
repository; it does not silently take ownership of shared agent files.
|
|
41
|
+
5. **Portable and local first.** Knowledge remains readable, versionable files.
|
|
42
|
+
Core behavior does not require a server, account, or network request.
|
|
43
|
+
6. **Observable.** A developer can determine which knowledge was selected, why it
|
|
44
|
+
was selected, and whether resolution was provisional.
|
|
45
|
+
7. **One canonical path.** `context` resolves judgment, adapters deliver it, and
|
|
46
|
+
`sync` only prepares a safe local cache. Avoid parallel prompt, index, watcher,
|
|
47
|
+
and repository-mutation workflows.
|
|
48
|
+
|
|
49
|
+
## Near-term roadmap
|
|
50
|
+
|
|
51
|
+
### Now: make judgment first-class
|
|
52
|
+
|
|
53
|
+
- Let developers capture proactive directives as well as corrections.
|
|
54
|
+
- Describe rules as codified judgment rather than only mistake prevention.
|
|
55
|
+
- Preserve the hard-rule versus soft-preference distinction.
|
|
56
|
+
- Keep adapters automatic and resolution explainable.
|
|
57
|
+
- Derive local usage counts, last-selected timestamps, and unused knowledge from
|
|
58
|
+
bounded metadata-only receipt history.
|
|
59
|
+
|
|
60
|
+
### Next: propose improvements
|
|
61
|
+
|
|
62
|
+
- Let agents draft proposed lessons from explicit developer corrections, with a
|
|
63
|
+
mandatory preview and approval step.
|
|
64
|
+
- Add another adapter only where it removes repeated setup for real users.
|
|
65
|
+
|
|
66
|
+
### Later, only with evidence
|
|
67
|
+
|
|
68
|
+
- Effectiveness signals beyond selection counts.
|
|
69
|
+
- More expressive conflict reporting between personal and team instructions.
|
|
70
|
+
- Optional semantic discovery as a convenience layer, never as the sole path for
|
|
71
|
+
mandatory rules.
|
|
72
|
+
|
|
73
|
+
## Explicit non-goals
|
|
74
|
+
|
|
75
|
+
dotai is not currently a transcript store, general-purpose agent memory, goal
|
|
76
|
+
manager, agent orchestrator, autonomous self-editing instruction system, hosted
|
|
77
|
+
vector database, production-agent observability platform, or replacement for
|
|
78
|
+
repository and organization policy.
|
|
79
|
+
|
|
80
|
+
## Decision test
|
|
81
|
+
|
|
82
|
+
A feature belongs in dotai when it makes developer judgment easier to capture,
|
|
83
|
+
selectively apply, verify, maintain, or carry across agents. It should also reduce
|
|
84
|
+
repeated correction or setup without making every interaction heavier. Features
|
|
85
|
+
that merely accumulate history or orchestrate agents need separate evidence.
|
|
86
|
+
|
|
87
|
+
## Success signals
|
|
88
|
+
|
|
89
|
+
- A developer teaches a rule once and sees it applied by another agent.
|
|
90
|
+
- Relevant context stays small as the knowledge base grows.
|
|
91
|
+
- Users can explain why a rule, preference, role, or skill was selected.
|
|
92
|
+
- Audit and usage information causes users to improve or retire knowledge.
|
|
93
|
+
- dotai saves more repeated correction time than it adds in maintenance.
|