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.
Files changed (85) hide show
  1. dotai_cli-0.6.0/CHANGELOG.md +34 -0
  2. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/PKG-INFO +130 -162
  3. dotai_cli-0.6.0/PRODUCT.md +93 -0
  4. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/README.md +128 -159
  5. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/pyproject.toml +2 -3
  6. dotai_cli-0.6.0/src/dotai/__init__.py +3 -0
  7. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/cli/__init__.py +21 -12
  8. dotai_cli-0.6.0/src/dotai/cli/insights_cmd.py +85 -0
  9. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/cli/prefs_cmd.py +5 -3
  10. dotai_cli-0.6.0/src/dotai/cli/roles_cmd.py +30 -0
  11. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/cli/rules_cmd.py +44 -42
  12. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/cli/skills_cmd.py +5 -129
  13. dotai_cli-0.6.0/src/dotai/cli/sync_cmd.py +201 -0
  14. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/context.py +20 -1
  15. dotai_cli-0.6.0/src/dotai/insights.py +194 -0
  16. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/models.py +0 -113
  17. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/roles.py +1 -25
  18. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/rules.py +60 -25
  19. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/learn.md +10 -9
  20. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/skills.py +1 -33
  21. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/store.py +2 -22
  22. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/sync.py +18 -129
  23. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_context.py +4 -0
  24. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_import_agent.py +26 -0
  25. dotai_cli-0.6.0/tests/test_insights.py +73 -0
  26. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_models.py +0 -52
  27. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_store.py +1 -31
  28. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_sync.py +14 -112
  29. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/uv.lock +1 -30
  30. dotai_cli-0.5.0/src/dotai/__init__.py +0 -3
  31. dotai_cli-0.5.0/src/dotai/cli/roles_cmd.py +0 -62
  32. dotai_cli-0.5.0/src/dotai/cli/sync_cmd.py +0 -349
  33. dotai_cli-0.5.0/src/dotai/cli/watch_cmd.py +0 -120
  34. dotai_cli-0.5.0/src/dotai/indexer.py +0 -201
  35. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/.github/workflows/ci.yml +0 -0
  36. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/.github/workflows/publish.yml +0 -0
  37. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/.gitignore +0 -0
  38. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/LICENSE +0 -0
  39. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/rdc.yaml +0 -0
  40. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/__main__.py +0 -0
  41. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/agents.py +0 -0
  42. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/cli/__main__.py +0 -0
  43. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/cli/agents_cmd.py +0 -0
  44. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/converter.py +0 -0
  45. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/import_agent.py +0 -0
  46. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/maintenance.py +0 -0
  47. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/preferences.py +0 -0
  48. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/roles/architect.md +0 -0
  49. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/roles/debugger.md +0 -0
  50. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/roles/founder.md +0 -0
  51. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/roles/mentor.md +0 -0
  52. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/roles/product-manager.md +0 -0
  53. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/roles/qa.md +0 -0
  54. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/roles/reviewer.md +0 -0
  55. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/roles/security.md +0 -0
  56. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/roles/ship.md +0 -0
  57. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/roles/writer.md +0 -0
  58. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/careful.md +0 -0
  59. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/commit-helper.md +0 -0
  60. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/compress.md +0 -0
  61. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/context-dump.md +0 -0
  62. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/investigate.md +0 -0
  63. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/parallel-work.md +0 -0
  64. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/plan.md +0 -0
  65. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/review.md +0 -0
  66. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/scaffold.md +0 -0
  67. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/ship.md +0 -0
  68. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/techdebt.md +0 -0
  69. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/seed/skills/verify.md +0 -0
  70. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/tools/__init__.py +0 -0
  71. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/tools/base.py +0 -0
  72. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/tools/registry.py +0 -0
  73. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/utils.py +0 -0
  74. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/src/dotai/vet.py +0 -0
  75. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/__init__.py +0 -0
  76. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/conftest.py +0 -0
  77. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_agents.py +0 -0
  78. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_converter.py +0 -0
  79. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_maintenance.py +0 -0
  80. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_preferences.py +0 -0
  81. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_roles.py +0 -0
  82. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_rules.py +0 -0
  83. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_skills.py +0 -0
  84. {dotai_cli-0.5.0 → dotai_cli-0.6.0}/tests/test_utils.py +0 -0
  85. {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.5.0
4
- Summary: Universal AI context for any coding agent. Roles, skills, and rules in ~/.ai/
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
- **Your coding agents should remember what you taught them.**
31
+ **Portable engineering judgment for coding agents.**
33
32
 
34
- dotai gives Claude, Cursor, Gemini, Codex, and other coding agents one shared memory for how you build software. Keep your rules, workflows, and engineering taste in `~/.ai/`; sync them into any project with one command.
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
- ┌─ CLAUDE.md + native slash commands
38
- ~/.ai/ ── dotai sync ───┼─ .cursorrules
39
- ├─ GEMINI.md
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
- No server. No account. No proprietary memory layer. Just portable Markdown that you own.
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
- ## Stop reteaching every agent
43
+ ## The short version
46
44
 
47
- You tell one agent “never call `useEffect` directly.” Next week, a different agent does exactly that. Your review checklist lives in one tool, your deployment workflow in another, and the correction you made yesterday disappears with the chat.
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
- dotai turns those corrections into durable, reusable context:
53
+ The default is personal and repository-safe. Team instructions stay authoritative.
50
54
 
51
- - **Rules are hard constraints.** Capture coding standards and scope them by project or file pattern.
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
- - **Sync speaks each agent's language.** Generate the bootstrap file that Claude, Cursor, Gemini, or Codex already understands.
65
+ - **Adapters fit normal workflows.** Configure an agent once, then ask naturally while dotai resolves context behind the scenes.
56
66
 
57
- The useful part is the feedback loop:
67
+ Rules can be proactive or learned from a correction:
58
68
 
59
69
  ```text
60
- agent makes a mistake → capture the correction → sync → every agent learns it
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 a correction you never want to repeat
70
- dotai learn "no-print-debugging" \
71
- --issue "Debug output was left in production code" \
72
- --correction "Use structured logging and remove temporary debug output" \
73
- --globs "*.py"
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
- Now the rule is available to every supported agent, alongside reusable commands such as:
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
- /run_plan as product-manager
84
- /run_investigate as debugger
85
- /run_review as security-engineer
86
- /run_verify
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
- Inside a Git repository, `dotai sync` defaults to **local mode**. It 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.
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 context for pasting or piping into your agent. Use `dotai sync --shared` only when your team has intentionally chosen to maintain dotai sections in repository files.
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
- ### Moving an existing repository to local mode
215
+ ### Understanding what dotai delivered
196
216
 
197
- If an older dotai version wrote generated context into repository files, use the
198
- one-off detach command. It previews by default:
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 detach
202
- dotai detach --apply
221
+ dotai insights
222
+ dotai insights --agent claude
223
+ dotai insights --project my-app
224
+ dotai insights --json
203
225
  ```
204
226
 
205
- Detach removes only complete `<!-- dotai:start -->` blocks and Claude skill
206
- directories whose `SKILL.md` contains dotai's generated marker. Loader files
207
- containing team content are preserved and updated in place; files containing
208
- only generated dotai content are removed. Before applying changes, dotai copies
209
- every affected artifact to `~/.config/dotai/backups/detach/`. Detach is not part
210
- of routine sync and does not need to be run again after migration.
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
- After an explicit shared Claude sync (`dotai sync --shared --agents claude`), skills appear as native slash commands:
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
- Assemble a skill prompt and pipe it into any tool:
288
+ Resolve a skill and its role through the same context engine used by adapters:
249
289
 
250
290
  ```bash
251
- # Copy a skill prompt to clipboard
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
- ### Recording what you learn
297
+ ### Teaching your engineering judgment
262
298
 
263
- `dotai learn` creates a **structured rule file** in `~/.ai/rules/` by default (not a freeform journal scrap).
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 + resync agent configs
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
- # Freeform journal entry in rules.md (opt-in)
282
- dotai learn "note" -i "..." -c "..." --append-md
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 feedback loop: **vibe-code → agent makes mistake → `/run_learn` → structured rule → `dotai sync` → agent never repeats it.**
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 the current coding agent to draft, diff, and review changes
319
- > /run_compress
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
- `/run_compress` 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.
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 mistakes as permanent rules |
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
- Skills and roles can be composed inline. Pass `as <role>` to run any skill with a specific persona:
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
- From the CLI:
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 agent files contain a compact bootstrap by default: universal rule summaries plus preference, role, and skill catalogs. Use `dotai context` to expand relevant material on demand, or pass `dotai sync --full` for the legacy complete inline context.
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 tool-specific context with:
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
- - **Claude Code**: compact pointers + native `.claude/skills/` slash commands
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
- # Safe default in Git: generate outside the repository
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
- ### Supported Agents
728
-
729
- | Agent | Output File | Sync Command | Notes |
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
- After install, run `dotai sync` to make them available as slash commands in Claude Code, Gemini, etc.
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
- ### Converting Claude-native skills
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
- ### Importing from plugin ecosystems
790
-
791
- dotai can import skills from **Claude plugins**, **Cursor plugins**, and **Gemini extensions** — converting them into universal dotai format so they work across all tools.
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
- # Import from a Claude Code plugin
795
- dotai import-plugin /path/to/claude-plugin/
796
- dotai import-plugin https://github.com/user/claude-plugin
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
- The importer discovers skills, commands, agents, and rules within the plugin and converts each to dotai format. Hooks and MCP server configs are noted but not converted (they're tool-specific).
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 prompt <skill> [--role <role>] # Assemble skill + role prompt for any agent
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 primer [--project <name>|--path <path>] [--full]
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" -i "..." -c "..." # Create structured rule (default)
873
- dotai learn "title" -i "..." -c "..." --dry-run|--sync|--force|--append-md
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 watch [path] [--agents ...] # Auto-resync on ~/.ai/ changes
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.