facult 2.12.0 → 2.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -7,8 +7,8 @@
7
7
  <a aria-label="Homebrew tap" href="https://github.com/hack-dance/homebrew-tap">
8
8
  <img alt="Homebrew tap" src="https://img.shields.io/badge/homebrew-hack--dance%2Ftap%2Ffclt-FBB040.svg?style=flat-square&logo=homebrew&logoColor=white&labelColor=000000">
9
9
  </a>
10
- <a aria-label="CI status" href="https://github.com/hack-dance/fclt/actions/workflows/ci.yml">
11
- <img alt="CI" src="https://img.shields.io/github/actions/workflow/status/hack-dance/fclt/ci.yml?branch=main&style=flat-square&logo=github&label=ci&labelColor=000000">
10
+ <a aria-label="Release workflow" href="https://github.com/hack-dance/fclt/actions/workflows/release.yml">
11
+ <img alt="Release" src="https://img.shields.io/github/actions/workflow/status/hack-dance/fclt/release.yml?branch=main&style=flat-square&logo=github&label=release&labelColor=000000">
12
12
  </a>
13
13
  <a aria-label="hack.dance" href="https://hack.dance">
14
14
  <img alt="Made by hack.dance" src="https://img.shields.io/badge/MADE%20BY%20HACK.DANCE-000000.svg?style=flat-square&labelColor=000000">
@@ -19,85 +19,90 @@
19
19
  <img alt="fclt demo" src="./Ghostty.gif">
20
20
  </p>
21
21
 
22
- `fclt` is a CLI for building and evolving AI faculties across tools, users, and projects.
22
+ `fclt` is a CLI for managing AI capability across tools and projects.
23
23
 
24
- `fclt` manages the reusable parts of your AI setup: instructions, snippets, templates, skills, agents, rules, and the feedback loops that improve them over time.
24
+ It gives instructions, snippets, skills, agents, MCP definitions, automations, and tool config a shared home. It can inspect what already exists, consolidate duplicates, render selected capability into tools like Codex and Claude, and preserve real-work friction as writeback that can later become reviewed improvements.
25
25
 
26
- It helps you:
27
- - keep a canonical store in `~/.ai` or `<repo>/.ai`
28
- - render managed tool files into Codex, Claude, Cursor, and similar tools
29
- - inspect dependencies, provenance, and rendered outputs
30
- - review trust and audit remote or local capability before it spreads
31
- - capture real-work friction as writeback and evolve canonical assets over time
26
+ Use it when AI setup has become scattered across dotfiles, tool homes, repos, prompts, skills, and one-off notes.
32
27
 
33
- ## Quick Start
28
+ <p align="center">
29
+ <img alt="fclt capability loop: setup, capability, agents, work units, writebacks, evolution, approval, and better future agents" src="./docs/assets/fclt-capability-loop.png">
30
+ </p>
31
+
32
+ Most usage should be agent-led after setup. Humans install, inspect, audit, and approve broad changes. Agents use `fclt` to find the right capability, preserve friction as writeback, and turn repeated signal into reviewed improvements.
33
+
34
+ ## What it does
35
+
36
+ `fclt` helps you:
37
+
38
+ - keep reusable AI capability in a canonical `~/.ai` root
39
+ - keep repo-specific capability in `<repo>/.ai`
40
+ - inspect skills, instructions, MCP servers, agents, automations, and rendered outputs
41
+ - compose guidance from smaller units with refs and snippets
42
+ - optionally render approved capability into Codex, Claude, Cursor, and similar tools
43
+ - record writebacks when an agent finds missing context, weak verification, stale guidance, or tool friction
44
+ - turn repeated writeback into reviewable evolution proposals
45
+ - audit local and remote capability before it spreads
46
+
47
+ The default posture is read-first. Managed rendering is available, but it is not required for inventory, review, writeback, or evolution. The goal is a background feedback loop, not another CLI users must babysit.
34
48
 
35
- ### 1. Install fclt
49
+ ## Install
36
50
 
37
- Recommended global install:
51
+ Homebrew:
38
52
 
39
53
  ```bash
40
54
  brew tap hack-dance/tap
41
55
  brew install hack-dance/tap/fclt
42
- fclt --help
43
56
  fclt --version
44
57
  ```
45
58
 
46
- Package-manager install:
59
+ npm or Bun:
47
60
 
48
61
  ```bash
49
62
  npm install -g facult
50
63
  # or
51
64
  bun add -g facult
52
- fclt --help
65
+ fclt --version
53
66
  ```
54
67
 
55
- The npm package name stays `facult` for registry compatibility. The installed command is still `fclt`.
68
+ The npm package is named `facult` for registry compatibility. The command is `fclt`.
56
69
 
57
- One-off usage without global install:
70
+ One-off usage:
58
71
 
59
72
  ```bash
60
73
  npx --yes -p facult fclt --help
61
74
  ```
62
75
 
63
- Direct binary install from GitHub Releases (macOS/Linux):
76
+ Direct binary install for macOS or Linux:
64
77
 
65
78
  ```bash
66
79
  curl -fsSL https://github.com/hack-dance/fclt/releases/latest/download/fclt-install.sh | bash
67
80
  ```
68
81
 
69
- Windows and manual installs can download the correct binary from each release page:
70
- `fclt-<version>-<platform>-<arch>`.
82
+ Windows and manual installs can download binaries from the [latest release](https://github.com/hack-dance/fclt/releases/latest).
71
83
 
72
- Update later with:
84
+ Update an installed binary:
73
85
 
74
86
  ```bash
75
87
  fclt self-update
76
- # or
77
- fclt update --self
88
+ fclt self-update --version 2.12.0
78
89
  ```
79
90
 
80
- Pin to a specific version:
91
+ ## Quick start
81
92
 
82
- ```bash
83
- fclt self-update --version 0.0.1
84
- ```
93
+ ### 1. Inspect existing AI state
85
94
 
86
- ### 2. Scan or bootstrap your canonical store
95
+ Start read-only:
87
96
 
88
97
  ```bash
89
- fclt scan --show-duplicates
90
98
  fclt status
99
+ fclt scan --show-duplicates
91
100
  fclt inventory --json
101
+ fclt list skills
102
+ fclt find verification
92
103
  ```
93
104
 
94
- `scan` is read-only. It inspects local configs and reports what `fclt` found without changing files.
95
-
96
- `status` reports the active canonical root, managed-tool state, generated index/graph state, writeback/proposal queue state, and high-signal sync risks.
97
-
98
- `inventory` is the stable machine-readable discovery surface for agent harnesses. It returns a JSON catalog of discovered MCP servers, skills, and instruction/rule assets across known tool configs and configured scan roots. MCP definitions are redacted by default, including env values, inline `KEY=value` args, bearer tokens, and secret-looking URL query params, but include safe auth metadata such as env keys, env references, and whether inline secret values were found.
99
-
100
- Useful inventory slices:
105
+ Useful flags:
101
106
 
102
107
  ```bash
103
108
  fclt inventory --json --global
@@ -105,347 +110,89 @@ fclt inventory --json --project
105
110
  fclt inventory --json --tool codex
106
111
  ```
107
112
 
108
- Use `mcpCapabilities` for the de-duplicated agent-facing MCP view. Use `mcpServers` when you need raw per-source occurrences for diagnostics.
113
+ `inventory` is the stable JSON surface for agents and automation. It redacts MCP secrets by default while preserving safe metadata such as env references and whether inline secrets were detected.
109
114
 
110
- If you want a repo-local `.ai`:
111
-
112
- ```bash
113
- cd /path/to/repo
114
- fclt templates init project-ai
115
- fclt index
116
- ```
115
+ ### 2. Create a canonical store
117
116
 
118
- If you want a concrete copy of the built-in operating-model pack without managing a tool:
117
+ Install the built-in operating-model pack into the global root:
119
118
 
120
119
  ```bash
121
120
  fclt templates init operating-model --global
122
- fclt templates init operating-model --root /path/to/.ai
123
- ```
124
-
125
- ### 3. Import existing skills or config
126
-
127
- ```bash
128
- fclt consolidate --auto keep-current --from ~/.codex/skills --from ~/.agents/skills
129
- fclt index
121
+ fclt index --global
130
122
  ```
131
123
 
132
- Why `keep-current`: it is deterministic and non-interactive for duplicate sources.
133
-
134
- ### 4. Optional: manage a tool and sync
124
+ Create a repo-local `.ai` root:
135
125
 
136
126
  ```bash
137
- fclt manage codex --dry-run
138
- fclt manage codex --adopt-existing
139
- fclt sync codex --builtin-conflicts overwrite
140
- fclt manage cursor
141
- fclt manage claude
142
-
143
- fclt enable requesting-code-review receiving-code-review brainstorming systematic-debugging --for codex,cursor,claude
144
- fclt sync
127
+ cd /path/to/repo
128
+ fclt templates init project-ai
129
+ fclt status --project
145
130
  ```
146
131
 
147
- Managed rendering is an advanced mode. Prefer `fclt inventory`, `fclt list`, `fclt consolidate`, and explicit writeback/evolution when you mainly want visibility and normalization across Codex, Claude, and other tool homes. Use `manage` only when you want fclt to write rendered files back into a tool.
148
-
149
- Use `--dry-run` first if the live tool already has local content. If the tool already contains skills, agents, rules, docs, config, or MCP definitions, rerun `manage` with `--adopt-existing` and add `--existing-conflicts keep-canonical|keep-existing` if names collide.
150
-
151
- Ordinary `fclt sync` does not import live tool edits into canonical state. If you intentionally edited skills, agents, docs, rules, config, or MCP entries in Codex/Claude and want fclt to pick them up, run `fclt sync --adopt-live`.
152
-
153
- Codex path policy:
154
- - skills render to `.agents/skills`
155
- - local plugin marketplaces render to `.agents/plugins/marketplace.json`
156
- - local plugin bundles render to `plugins/`
157
- - Codex runtime config, rules, agents, and automations still render under `.codex/`
158
-
159
- If you run these commands inside a repo that has `<repo>/.ai`, `fclt` targets the project-local canonical store and repo-local tool outputs by default.
160
-
161
- ### 5. Inspect and evolve
132
+ Create individual capability units:
162
133
 
163
134
  ```bash
164
- fclt list skills
165
- fclt inventory --json
166
- fclt status --json
167
- fclt show instruction:WRITING
168
- fclt show mcp:github
169
- fclt find verification
170
- fclt graph AGENTS.global.md
171
- fclt ai writeback add --kind weak_verification --summary "Checks were too shallow" --asset instruction:VERIFICATION
172
- fclt ai evolve propose
135
+ fclt templates init instruction BUN
136
+ fclt templates init snippet global/lang/bun
137
+ fclt templates init skill project-review
138
+ fclt templates init agent review-operator
173
139
  ```
174
140
 
175
- Context controls:
141
+ ### 3. Consolidate existing skills or config
176
142
 
177
- ```bash
178
- fclt list instructions --global
179
- fclt list instructions --project
180
- fclt find verification --scope merged --source project
181
- fclt list agents --root /path/to/repo/.ai
182
- ```
183
-
184
- ### 6. Optional: autosync, source trust, and audit
143
+ Bring existing tool-native assets into a canonical root deliberately:
185
144
 
186
145
  ```bash
187
- fclt autosync install --git-remote origin --git-branch main --git-interval-minutes 60
188
- fclt autosync status
189
-
190
- fclt sources list
191
- fclt verify-source skills.sh --json
192
- fclt sources trust skills.sh --note "reviewed"
193
- fclt install skills.sh:code-review --as code-review-skills-sh --strict-source-trust
194
-
195
- fclt audit
196
- fclt audit --non-interactive --severity high
197
- fclt audit safe mcp:github --rule static:mcp-env-inline-secret --note "reviewed"
198
- fclt audit fix mcp:github
199
- ```
200
-
201
- ## Overview
202
-
203
- Useful AI behavior is composable. You need small reusable parts, a clean way to combine them, and a safe way to render them into the files your tools actually use.
204
-
205
- `fclt` is a canonical store plus a renderer:
206
- - canonical store in `~/.ai` or `<repo>/.ai`
207
- - rendered tool files in places like `~/.codex`, `~/.claude`, or repo-local tool dirs
208
- - discovery and graph views for dependencies, provenance, and rendered targets
209
- - writeback and evolution flows for improving canonical assets over time
210
-
211
- The renderer is optional. The low-friction default is to let tools keep their native files, use `fclt inventory`/`scan`/`list` to see the full global set, and use `fclt consolidate` or `fclt sync --adopt-live` only when you explicitly want to promote live tool edits into canonical `~/.ai`.
212
-
213
- ## Documentation
214
-
215
- Focused docs live under [docs](./docs/README.md):
216
-
217
- - [Concepts](./docs/concepts.md): roots, scopes, state layers, and asset types
218
- - [Composable Capability](./docs/composable-capability.md): refs, snippets, instruction templates, and evolvable units
219
- - [Managed Mode](./docs/managed-mode.md): safe rendering and adoption rules
220
- - [Project `.ai`](./docs/project-ai.md): repo-local capability and project sync policy
221
- - [Built-In Pack](./docs/built-in-pack.md): packaged writeback/evolution defaults
222
- - [Writeback And Evolution](./docs/writeback-evolution.md): feedback-loop workflow and review surfaces
223
- - [Roadmap](./docs/roadmap.md): current gaps and non-goals
224
-
225
- ## Built-in Defaults
226
-
227
- `fclt` includes a built-in layer for writeback and evolution. By default, that layer provides:
228
- - instructions for work units, capability composition, learning/writeback, evolution, integration, and project capability
229
- - agents such as `writeback-curator`, `evolution-planner`, and `scope-promoter`
230
- - skills such as `capability-evolution` and `project-operating-layer-design`
231
-
232
- Those built-in defaults are always available as `@builtin/facult-operating-model/...`. To install a concrete copy into a canonical root without managing any tool, run `fclt templates init operating-model --global`, `--project`, or `--root /path/to/.ai`.
233
-
234
- Managed mode is separate. Global tool management renders the bundled docs, agents, and skills into that tool's live files, so every managed agent sees that it can preserve strong friction with `fclt ai writeback ...` and escalate repeated signal with `fclt ai evolve ...`. Project-local `.ai` roots do not sync the built-in operating-model layer unless you explicitly enable it.
235
-
236
- The intended feedback loop is:
237
- 1. agents notice durable friction, weak verification, stale guidance, or missing capability during normal work
238
- 2. agents record one strong writeback when the signal, target, and scope are clear
239
- 3. humans or scheduled automations review grouped writebacks and existing proposals
240
- 4. only repeated evidence, a clearly missing capability, or a stale canonical asset becomes an evolution proposal
241
- 5. accepted proposals update canonical markdown assets, skills, snippets, or project/global instructions
242
-
243
- Composition matters: prefer atomic instructions such as `BUN.md` or `RUST.md`, snippets for repeated rendered blocks, skills for workflows, agents for delegated roles, MCP/tool config for tool interfaces, and automations for scheduled loops. Record writeback against the smallest unit that needs to improve.
244
-
245
- If you want to disable default built-in sync for one canonical root:
246
-
247
- ```toml
248
- version = 1
249
-
250
- [builtin]
251
- sync_defaults = false
146
+ fclt consolidate --auto keep-current --from ~/.codex/skills --from ~/.agents/skills
147
+ fclt index
252
148
  ```
253
149
 
254
- Put that in `config.toml` or `config.local.toml` under the active canonical root.
150
+ `keep-current` is deterministic and non-interactive. Use other conflict modes only when you have reviewed the sources.
255
151
 
256
- ## Use fclt from your agents
152
+ ### 4. Optional: manage a tool
257
153
 
258
- `fclt` is CLI-first. The practical setup is:
259
- 1. Install `fclt` globally so any agent runtime can execute it.
260
- 2. Use `fclt inventory`, `fclt list`, and `fclt consolidate` to inspect and normalize existing tool-native state.
261
- 3. Install the built-in operating-model pack into `~/.ai` or a project `.ai` when you want editable canonical defaults without managed rendering.
262
- 4. If you want fclt-owned rendered outputs, manage each agent tool with `fclt manage <tool>` and `fclt sync`.
263
- 5. Let the built-in operating-model layer render global writeback/evolution instructions into the tool only where managed rendering is worth the ownership tradeoff.
264
- 6. Optionally scaffold MCP wrappers if you want an MCP entry that delegates to `fclt`.
154
+ Managed mode writes rendered files into a tool home. Use it only when `fclt` should own that rendered surface.
265
155
 
266
156
  ```bash
267
- # Scaffold reusable templates in the canonical store
268
- fclt templates init agents
269
- fclt templates init agent review-operator
270
- fclt templates init instruction BUN
271
- fclt templates init snippet global/lang/bun
272
- fclt templates init skill facult-manager
273
-
274
- # Enable that skill for managed tools
275
- fclt manage codex
276
- fclt manage cursor
277
- fclt manage claude
278
- fclt enable facult-manager --for codex,cursor,claude
279
- fclt sync
157
+ fclt manage codex --dry-run
158
+ fclt manage codex --adopt-existing
159
+ fclt sync codex --dry-run
160
+ fclt sync codex
280
161
  ```
281
162
 
282
- Optional MCP scaffold:
163
+ Ordinary `fclt sync` does not import live tool edits into canonical state. If a live tool file was edited intentionally and should be promoted, run:
283
164
 
284
165
  ```bash
285
- fclt templates init mcp facult-cli
286
- fclt enable mcp:facult-cli --for codex,cursor,claude
287
- fclt sync
166
+ fclt sync --adopt-live
288
167
  ```
289
168
 
290
- Note: `templates init mcp ...` is a scaffold, not a running server by itself.
291
- The supported review surface today is the CLI plus generated Codex automation templates; MCP is an optional wrapper path when an agent environment prefers MCP calls over shell commands.
169
+ Project-managed sync is default-deny. Repo-local tool outputs only receive assets that the project explicitly allows.
292
170
 
293
- ## Mental Model
171
+ ## Core model
294
172
 
295
- `fclt` treats both `~/.ai` and `<repo>/.ai` as canonical stores. The global store is for user-owned reusable capability. The project store is for repo-owned capability that should travel with the codebase.
296
-
297
- Typical layout:
173
+ `fclt` separates source, generated state, runtime state, review artifacts, and rendered output.
298
174
 
299
175
  ```text
300
- ~/.ai/
301
- AGENTS.global.md
302
- AGENTS.override.global.md
303
- config.toml
304
- config.local.toml
305
- instructions/
306
- snippets/
307
- agents/
308
- skills/
309
- mcp/
310
- templates/
311
- tools/
312
- codex/
313
- config.toml
314
- plugins/
315
- marketplace.json
316
- rules/
317
- <repo>/
318
- .ai/
319
- config.toml
320
- instructions/
321
- snippets/
322
- agents/
323
- skills/
324
- tools/
325
- .facult/
326
- ai/
327
- index.json
328
- graph.json
329
- .codex/
330
- .agents/
331
- plugins/
332
- .claude/
176
+ ~/.ai/ global canonical capability
177
+ <repo>/.ai/ project canonical capability
178
+ ~/.ai/writebacks/ markdown review artifacts
179
+ ~/.ai/evolution/ markdown proposal artifacts
180
+ tool homes rendered output for Codex, Claude, Cursor, etc.
181
+ machine-local fclt state queues, drafts, indexes, managed state, runtime cache
333
182
  ```
334
183
 
335
- Important split:
336
- - `.ai/` is canonical source
337
- - global `.ai/.facult/ai/` is generated AI state for the global canonical root
338
- - project generated AI state lives in machine-local per-project Facult state, outside the repo
339
- - machine-local Facult state such as project indexes, project graphs, managed-tool state, autosync runtime/config, install metadata, and launcher caches lives outside project `.ai/`
340
- - tool homes such as `.codex/` and `.claude/` are rendered outputs
341
- - the generated capability graph lives under the active generated AI state directory
342
-
343
- ### Asset types
344
-
345
- The canonical store can contain several distinct asset classes:
184
+ Canonical capability can include:
346
185
 
347
- - `instructions/`: reusable doctrine and deeper conceptual guidance
348
- - `snippets/`: small composable blocks that can be inserted into rendered markdown
349
- - `agents/`: role-specific agent manifests
186
+ - `instructions/`: reusable markdown doctrine
187
+ - `snippets/`: composable blocks inserted into rendered markdown
350
188
  - `skills/`: workflow-specific capability folders
351
- - `mcp/`: canonical MCP server definitions
352
- - `mcp/servers.local.json` or `mcp/mcp.local.json`: ignored machine-local MCP secret overlay
353
- - `tools/<tool>/config.toml`: canonical tool config
354
- - `tools/<tool>/config.local.toml`: machine-local tool config overlay
355
- - `tools/<tool>/rules/*.rules`: canonical tool rules
356
- - global docs such as `AGENTS.global.md` and `AGENTS.override.global.md`
357
-
358
- Not every asset syncs directly to a tool. Some exist primarily to support rendered outputs or to be discovered and reused by other canonical assets.
359
-
360
- ### Canonical conventions
361
-
362
- - Use `instructions/` for reusable markdown documents
363
- - Use `snippets/` for composable partial blocks injected into markdown templates
364
- - Use `tools/codex/rules/*.rules` for actual Codex approval-policy rules
365
- - Use logical refs such as `@ai/instructions/WRITING.md` in tracked source
366
- - Use `@builtin/facult-operating-model/...` for packaged built-in defaults
367
- - Use `@project/...` when a tracked ref must resolve inside a repo-local `.ai`
368
- - Use config-backed refs in prompts where you want stable named references such as `${refs.writing_rule}`
369
-
370
- ### Config and env layering
371
-
372
- Canonical render context is layered explicitly:
373
- 1. built-ins injected by `fclt`
374
- 2. active canonical root `config.toml`
375
- 3. active canonical root `config.local.toml`
376
- 4. explicit runtime overrides
377
-
378
- Built-ins currently include:
379
- - `AI_ROOT`
380
- - `HOME`
381
- - `PROJECT_ROOT`
382
- - `PROJECT_SLUG`
383
- - `TARGET_TOOL`
384
- - `TARGET_PATH`
385
-
386
- Recommended split:
387
- - `~/.ai/config.toml` or `<repo>/.ai/config.toml`: tracked, portable, non-secret refs/defaults
388
- - `~/.ai/config.local.toml` or `<repo>/.ai/config.local.toml`: ignored, machine-local paths and secrets
389
- - `~/.ai/mcp/servers.json` or `<repo>/.ai/mcp/servers.json`: tracked canonical MCP definitions
390
- - `~/.ai/mcp/servers.local.json` or `<repo>/.ai/mcp/servers.local.json`: ignored machine-local MCP env overlay for secrets and per-machine auth
391
- - `~/.ai/tools/<tool>/config.toml` or `<repo>/.ai/tools/<tool>/config.toml`: tracked tool defaults
392
- - `~/.ai/tools/<tool>/config.local.toml` or `<repo>/.ai/tools/<tool>/config.local.toml`: ignored, machine-local tool overrides merged after tracked tool config during sync
393
- - `[builtin].sync_defaults = false`: disable builtin default sync/materialization for this root
394
- - `[project_sync.<tool>]`: explicit project-managed allowlist for assets that may render into repo-local tool outputs
395
- - `fclt sync --builtin-conflicts overwrite`: allow packaged builtin defaults to overwrite locally modified generated targets
396
- - `fclt audit fix ...`: move inline MCP secrets from tracked canonical config into the local MCP overlay and re-sync managed tool configs
397
-
398
- For project-local `.ai` roots, tool sync is default-deny. Nothing flows into repo-local managed tool outputs unless the repo explicitly opts in. Use `config.toml` or `config.local.toml` under the project root:
399
-
400
- ```toml
401
- version = 1
402
-
403
- [project_sync.codex]
404
- skills = ["hack-cli", "hack-tickets"]
405
- agents = ["review-operator"]
406
- automations = ["project-check"]
407
- mcp_servers = ["github"]
408
- global_docs = true
409
- tool_rules = true
410
- tool_config = true
411
- ```
412
-
413
- That policy applies to project-managed tool renders, including assets inherited from the merged global index. If you want a global skill or shared Codex automation inside project-managed output, name it explicitly here. `fclt doctor --repair` can materialize repo-local project assets into `config.local.toml` for already-managed project roots.
414
-
415
- ### Snippets
416
-
417
- Snippets use HTML comment markers:
418
-
419
- ```md
420
- <!-- fclty:global/codex/baseline -->
421
- <!-- /fclty:global/codex/baseline -->
422
- ```
189
+ - `agents/`: delegated roles
190
+ - `mcp/`: MCP server definitions and overlays
191
+ - `automations/`: scheduled review loops
192
+ - `tools/<tool>/`: tool config and rules
193
+ - `AGENTS.global.md`: composed agent guidance
423
194
 
424
- Resolution rules:
425
- - unscoped marker `codingstyle` prefers `snippets/projects/<project>/codingstyle.md`, then falls back to `snippets/global/codingstyle.md`
426
- - explicit marker `global/codex/baseline` resolves directly to `snippets/global/codex/baseline.md`
427
-
428
- Commands:
429
-
430
- ```bash
431
- fclt snippets list
432
- fclt snippets show global/codex/baseline
433
- fclt snippets sync [--dry-run] [file...]
434
- ```
435
-
436
- Snippets are already used during global Codex `AGENTS.md` rendering.
437
-
438
- ### Composable instructions and refs
439
-
440
- Use instruction templates for atomic reusable doctrine:
441
-
442
- ```bash
443
- fclt templates init instruction BUN
444
- fclt templates init instruction lang/RUST
445
- fclt show instruction:BUN
446
- ```
447
-
448
- Use canonical refs to compose instructions without hard-coding paths:
195
+ Refs let markdown point at canonical assets without hard-coding paths:
449
196
 
450
197
  ```text
451
198
  @ai/instructions/BUN.md
@@ -453,465 +200,212 @@ Use canonical refs to compose instructions without hard-coding paths:
453
200
  @builtin/facult-operating-model/instructions/WORK_UNITS.md
454
201
  ```
455
202
 
456
- Use snippets when a repeated block should be inserted into rendered docs and evolved independently:
203
+ Snippet markers let repeated blocks stay independently editable:
457
204
 
458
205
  ```md
459
206
  <!-- fclty:global/lang/bun -->
460
207
  <!-- /fclty:global/lang/bun -->
461
208
  ```
462
209
 
463
- The composition rule is simple: instructions hold doctrine, snippets hold repeated blocks, skills hold workflows, agents hold roles, MCP/tool config holds interfaces, and automations hold scheduled review loops. Writeback and evolution should target the smallest unit that actually needs to change.
464
-
465
- ### Graph inspection
466
-
467
- The generated graph in `.ai/.facult/ai/graph.json` is queryable directly:
210
+ The rule is simple: target the smallest unit that needs to change. Use instructions for doctrine, snippets for repeated blocks, skills for workflows, agents for roles, MCP/tool config for interfaces, and automations for scheduled loops.
468
211
 
469
- ```bash
470
- fclt graph show instruction:WRITING
471
- fclt graph deps AGENTS.global.md
472
- fclt graph dependents @project/instructions/TESTING.md
473
- ```
212
+ ## Writeback and evolution
474
213
 
475
- This is the explicit dependency layer for:
476
- - snippet markers like `<!-- fclty:... -->`
477
- - config-backed refs like `${refs.*}`
478
- - canonical refs like `@ai/...`
479
- - project refs like `@project/...`
480
- - rendered outputs such as managed agents, docs, MCP configs, tool configs, and tool rules
214
+ Writeback is preserved signal from real work. Evolution turns repeated signal into reviewed changes.
481
215
 
482
- ### Writeback and evolution
483
-
484
- `fclt` also has a local writeback and evolution layer built on top of the graph:
216
+ Record one targeted writeback when the signal is durable:
485
217
 
486
218
  ```bash
487
219
  fclt ai writeback add \
488
220
  --kind weak_verification \
489
- --summary "Verification guidance did not distinguish shallow checks from meaningful proof." \
490
- --asset instruction:VERIFICATION \
491
- --tag verification \
492
- --tag false-positive
493
-
494
- fclt ai writeback list
495
- fclt ai writeback show WB-00001
496
- fclt ai writeback group --by asset
497
- fclt ai writeback summarize --by kind
498
- fclt ai evolve propose
499
- fclt ai evolve list
500
- fclt ai evolve show EV-00001
501
- fclt ai evolve draft EV-00001
502
- fclt ai evolve review EV-00001
503
- fclt ai evolve accept EV-00001
504
- fclt ai evolve reject EV-00001 --reason "Needs a tighter draft"
505
- fclt ai evolve supersede EV-00001 --by EV-00002
506
- fclt ai evolve apply EV-00001
507
- fclt ai evolve promote EV-00003 --to global --project
221
+ --summary "Checks were too shallow" \
222
+ --asset instruction:VERIFICATION
508
223
  ```
509
224
 
510
- Runtime writeback and evolution source state stays generated and machine-local:
511
- - global writeback state: machine-local Facult state under `.../global/ai/global/...`
512
- - project writeback state: machine-local per-project Facult state under `.../projects/<slug-hash>/ai/project/...`
513
- - editor-facing writeback review artifacts: `~/.ai/writebacks/global/*.md` and `~/.ai/writebacks/projects/<slug-hash>/*.md`
514
- - editor-facing evolution review artifacts: `~/.ai/evolution/global/*.md` and `~/.ai/evolution/projects/<slug-hash>/*.md`
515
-
516
- That split is intentional:
517
- - canonical source remains in `~/.ai` or `<repo>/.ai`
518
- - global generated index and graph state stays inside `~/.ai/.facult/`; JSON queues, proposal metadata, journals, draft refs, patches, and managed runtime state stay outside canonical source in machine-local state
519
- - human-readable review artifacts always live under the global `~/.ai` root, even when the signal is project-scoped
520
- - project repos do not receive bundled writeback/evolution review artifacts; project metadata such as cwd, project root, project slug, target refs, status, and evidence is captured in frontmatter instead
521
- - those records let agents and humans inspect what changed, why it changed, and how it was reviewed
522
-
523
- Use writeback when:
524
- - a task exposed a weak or misleading verification loop
525
- - an instruction or agent was missing key context
526
- - a pattern proved reusable enough to become doctrine
527
- - a project-local pattern deserves promotion toward global capability
528
- - a skill, tool, prompt, or default behavior repeatedly slows agents down without hard-failing
529
-
530
- Do not think of writeback as note-taking. Treat it as preserved signal that should improve the system.
531
-
532
- Recommended agent behavior:
533
- - record a writeback directly when the learning is durable, scoped, and targetable
534
- - prefer project scope for repo-specific tooling, tests, architecture, or workflow
535
- - use global scope for shared doctrine, shared skills, shared agents, or cross-project capability gaps
536
- - group or summarize before proposing evolution unless the missing capability is already obvious
537
- - use the smallest proposal kind that fits: `update_asset`, `create_asset`, `extract_snippet`, `add_skill`, or `promote_asset`
538
- - do not create proposals for one-off preferences, speculative ideas, or duplicate noise
539
-
540
- Current apply semantics are intentionally policy-bound:
541
- - targets are resolved through the generated graph when possible and fall back to canonical ref resolution for missing assets
542
- - apply is limited to markdown canonical assets
543
- - proposals must be drafted before they can be applied; higher-risk proposals still require explicit acceptance
544
- - supported proposal kinds currently include `create_instruction`, `update_instruction`, `create_agent`, `update_agent`, `update_asset`, `create_asset`, `extract_snippet`, `add_skill`, and `promote_asset`
545
- - low-risk project-scoped additive proposals such as `create_instruction` can be applied directly after drafting, while global and higher-risk proposals still require review/acceptance
546
-
547
- Current review/draft semantics:
548
- - `writeback group` and `writeback summarize` expose recurring patterns across `asset`, `kind`, and `domain` without mutating canonical assets
549
- - every writeback/proposal mutation refreshes a Markdown review artifact under global `~/.ai/writebacks/...` or `~/.ai/evolution/...` with frontmatter metadata
550
- - drafted proposals emit both a human-readable markdown draft and a patch artifact under machine-local generated state, and the latest draft body is mirrored into the global evolution review artifact
551
- - rerunning `evolve draft <id> --append ...` revises the draft and records draft history
552
- - `evolve promote --to global` creates a new high-risk global proposal from a project-scoped proposal; that promoted proposal can then be drafted, reviewed, and applied into `~/.ai`
553
-
554
- Review surfaces:
555
- - open `~/.ai/writebacks/` and `~/.ai/evolution/` in a Markdown editor for global and project-scoped review artifacts
556
- - `fclt status --json` reports queue/proposal paths, review artifact paths, and counts for the active scope
557
- - `fclt ai writeback list|show|group|summarize` reviews raw and clustered signal
558
- - `fclt ai evolve list|show|review` reviews proposal state without applying changes
559
- - `fclt templates init automation learning-review` scaffolds background writeback capture/review
560
- - `fclt templates init automation evolution-review` scaffolds periodic proposal review
561
- - `fclt templates init automation tool-call-audit` scaffolds repeated tool-friction review
562
-
563
- ### Scope and source selection
564
-
565
- Most inventory and sync commands support explicit canonical-root selection:
566
-
567
- - `--global` to force `~/.ai`
568
- - `--project` to force the nearest repo-local `.ai`
569
- - `--root /path/to/.ai` to point at a specific canonical root
570
- - `--scope merged|global|project` for discovery views
571
- - `--source builtin|global|project` to filter provenance in list/find/show/graph flows
572
-
573
- ## Security and Trust
574
-
575
- `fclt` has two trust layers:
576
- - Item trust: `fclt trust <name>` / `fclt untrust <name>`
577
- - Source trust: `fclt sources ...` with levels `trusted`, `review`, `blocked`
578
-
579
- Bulk trust annotations are also supported:
225
+ Review accumulated signal:
580
226
 
581
227
  ```bash
582
- fclt trust --all
583
- fclt trust skills --all
584
- fclt untrust mcp --all
228
+ fclt ai writeback list
229
+ fclt ai writeback group --by asset
230
+ fclt ai writeback summarize --by kind
585
231
  ```
586
232
 
587
- `fclt` also supports interactive and scripted audit flows:
233
+ Draft a proposal only when the evidence repeats, a capability is clearly missing, or a canonical asset is stale:
588
234
 
589
- 1. Interactive audit workflow:
590
235
  ```bash
591
- fclt audit
592
- ```
593
- 2. Static audit rules (deterministic pattern checks):
594
- ```bash
595
- fclt audit --non-interactive --severity high
596
- fclt audit --non-interactive mcp:github --severity medium --json
597
- ```
598
- 3. Agent-based audit (Claude/Codex review pass):
599
- ```bash
600
- fclt audit --non-interactive --with claude --max-items 50
601
- fclt audit --non-interactive --with codex --max-items all --json
602
- ```
603
-
604
- 4. Suppress or remediate reviewed findings:
605
- ```bash
606
- fclt audit safe mcp:github --rule static:mcp-env-inline-secret --note "global managed render only"
607
- fclt audit safe --all --source static --yes
608
- fclt audit fix mcp:github
609
- fclt audit fix --all --source combined --yes
236
+ fclt ai evolve propose
237
+ fclt ai evolve list
238
+ fclt ai evolve draft EV-00001
239
+ fclt ai evolve review EV-00001
610
240
  ```
611
241
 
612
- Recommended security flow:
613
- 1. `fclt verify-source <source>`
614
- 2. `fclt sources trust <source>` only after review
615
- 3. use `--strict-source-trust` for `install`/`update`
616
- 4. keep tracked canonical MCP config secret-free; use `mcp/servers.local.json` for machine-local secrets
617
- 5. run both static and agent audits on a schedule
242
+ Project-scoped additive markdown changes can be lower risk. Global instructions, shared skills, plugins, and other broad surfaces require review before apply.
618
243
 
619
- ## Comprehensive Reference
244
+ ## Built-in pack
620
245
 
621
- ### Command categories
246
+ `fclt` ships an operating-model pack that teaches agents how to work in loops instead of one-off prompts:
622
247
 
623
- - Inventory and discovery
624
- ```bash
625
- fclt scan [--from <path>] [--json] [--show-duplicates]
626
- fclt inventory [--from <path>] [--json] [--show-secrets]
627
- fclt list [skills|mcp|agents|snippets|instructions] [--enabled-for <tool>] [--untrusted] [--flagged] [--pending]
628
- fclt show <name>
629
- fclt show instruction:<name>
630
- fclt show mcp:<name> [--show-secrets]
631
- fclt find <query> [--json]
632
- ```
248
+ - define work units
249
+ - verify meaningfully
250
+ - compose capability units
251
+ - record writebacks
252
+ - synthesize repeated signal into proposals
253
+ - decide project vs global scope
254
+ - respect managed-mode ownership boundaries
633
255
 
634
- - Canonical store and migration
635
- ```bash
636
- fclt consolidate [--auto keep-current|keep-incoming|keep-newest] [--from <path> ...]
637
- fclt index [--force]
638
- fclt migrate [--from <path>] [--dry-run] [--move] [--write-config]
639
- ```
256
+ Install it without managing any tool:
640
257
 
641
- - Managed mode and rollout
642
258
  ```bash
643
- fclt manage <tool> [--dry-run] [--adopt-existing] [--existing-conflicts keep-canonical|keep-existing]
644
- fclt unmanage <tool>
645
- fclt managed
646
- fclt enable <name> [--for <tool1,tool2,...>]
647
- fclt enable mcp:<name> [--for <tool1,tool2,...>]
648
- fclt disable <name> [--for <tool1,tool2,...>]
649
- fclt trust --all
650
- fclt trust skills --all
651
- fclt untrust mcp --all
652
- fclt sync [tool] [--dry-run] [--adopt-live] [--builtin-conflicts overwrite]
653
- fclt autosync install [tool] [--git-remote <name>] [--git-branch <name>] [--git-interval-minutes <n>] [--git-disable]
654
- fclt autosync status [tool]
655
- fclt autosync restart [tool]
656
- fclt autosync uninstall [tool]
259
+ fclt templates init operating-model --global
260
+ fclt templates init operating-model --project
261
+ fclt templates init operating-model --root /path/to/.ai
657
262
  ```
658
263
 
659
- - Remote catalogs and policies
660
- ```bash
661
- fclt search <query> [--index <name>] [--limit <n>]
662
- fclt install <index:item> [--as <name>] [--force] [--strict-source-trust]
663
- fclt update [--apply] [--strict-source-trust]
664
- fclt verify-source <name> [--json]
665
- fclt sources list
666
- fclt sources trust <source> [--note <text>]
667
- fclt sources review <source> [--note <text>]
668
- fclt sources block <source> [--note <text>]
669
- fclt sources clear <source>
670
- ```
264
+ The pack is also available as built-in refs under:
671
265
 
672
- - Templates and snippets
673
- ```bash
674
- fclt templates list
675
- fclt templates init operating-model [--global|--project|--root PATH] [--force] [--dry-run]
676
- fclt templates init project-ai
677
- fclt templates init skill <name>
678
- fclt templates init mcp <name>
679
- fclt templates init agent <name>
680
- fclt templates init instruction <name>
681
- fclt templates init snippet <marker>
682
- fclt templates init agents
683
- fclt templates init automation <template-id> --scope global|project|wide [--name <name>] [--project-root <path>] [--cwds <path1,path2>] [--rrule <RRULE>] [--status PAUSED|ACTIVE]
684
-
685
- fclt snippets list
686
- fclt snippets show <marker>
687
- fclt snippets create <marker>
688
- fclt snippets edit <marker>
689
- fclt snippets sync [--dry-run] [file...]
266
+ ```text
267
+ @builtin/facult-operating-model/...
690
268
  ```
691
269
 
692
- ### Codex automations
693
-
694
- `templates init automation` can scaffold three Codex automation forms:
695
-
696
- - `--scope project` (single repo): set `--project-root` (or infer from current working directory)
697
- - `--scope wide|global` (multiple repos): set `--cwds` explicitly; if omitted, created automation has no `cwds` by default.
698
- - If you run it interactively without `--scope`, `fclt` prompts for scope and, where possible, known workspaces (git worktrees, configured scan roots, and existing Codex automation paths).
699
- - Built-in automation templates are opinionated: they reference the global Codex operating model, point at relevant Codex skills, and tell Codex when to use focused subagents for bounded review work.
700
-
701
- Recommended topology:
702
-
703
- - Use `learning-review --scope project` for project-scoped writeback and evolution. This keeps verification and follow-up scoped to the repo that produced the evidence while storing human-readable review artifacts under global `~/.ai/writebacks/projects/...` and `~/.ai/evolution/projects/...`.
704
- - Use `evolution-review` on a slower cadence, usually weekly, to triage open proposals and proposal-worthy clusters and suggest the next operator action (`draft`, `review`, `accept`, `reject`, `promote`, or `apply`).
705
- - Use a separate wide/global automation only for cross-repo or shared-surface review, such as global doctrine, shared skills, or repeated tool/agent patterns across repos.
706
- - If you do use a wide learning review, keep the `cwds` list intentionally small and related. The prompt is designed to partition by cwd first, not to blur unrelated repos together.
707
- - A practical default is daily `learning-review` plus weekly `evolution-review`. The first finds and records durable signal; the second keeps proposal review from stalling.
708
- - Add `tool-call-audit` when you want a focused background loop for repeated tool failures, missing skills, excessive retries, or shallow-success patterns.
709
- - Treat automations as review and synthesis loops. They should create writebacks and proposals when evidence is strong, but high-risk global changes still move through proposal review before apply.
710
-
711
- Files are written to:
712
-
713
- - `~/.codex/automations/<name>/automation.toml`
714
- - `~/.codex/automations/<name>/memory.md`
715
-
716
- When Codex is in managed mode, canonical automation sources live under:
270
+ ## Automation
717
271
 
718
- - `~/.ai/automations/<name>/...` for global automation state
719
- - `<repo>/.ai/automations/<name>/...` for project-scoped canonical state
720
-
721
- Managed sync renders global canonical automation directories into the shared live Codex automation store at `~/.codex/automations/` and only removes automation files that were previously rendered by the same canonical root. Project-scoped automation sources are default-deny; add their names to `[project_sync.codex].automations` before project managed sync can render them into that shared live store.
722
-
723
- Example project automation:
272
+ `fclt` can scaffold Codex automations for recurring review loops:
724
273
 
725
274
  ```bash
726
- fclt templates init automation tool-call-audit \
275
+ fclt templates init automation learning-review \
727
276
  --scope project \
728
277
  --project-root /path/to/repo \
729
- --name project-tool-audit \
730
- --status ACTIVE
731
- ```
732
-
733
- Example global automation:
734
-
735
- ```bash
736
- fclt templates init automation learning-review \
737
- --scope wide \
738
- --cwds /path/to/repo-a,/path/to/repo-b \
739
278
  --status PAUSED
740
- ```
741
-
742
- Example weekly evolution automation:
743
279
 
744
- ```bash
745
280
  fclt templates init automation evolution-review \
746
281
  --scope wide \
747
282
  --cwds /path/to/repo-a,/path/to/repo-b \
748
- --name weekly-evolution-review \
283
+ --status PAUSED
284
+
285
+ fclt templates init automation tool-call-audit \
286
+ --scope project \
287
+ --project-root /path/to/repo \
749
288
  --status PAUSED
750
289
  ```
751
290
 
752
- Interactive prompt example:
291
+ Use `learning-review` to preserve signal, `evolution-review` to triage proposals, and `tool-call-audit` to find repeated tool friction.
753
292
 
754
- ```bash
755
- fclt templates init automation learning-review
756
- # prompts for scope, then lets you select known workspaces or add custom paths.
757
- ```
293
+ ## Security and trust
294
+
295
+ Remote capability should be reviewed before broad use.
758
296
 
759
- For full flags and exact usage:
760
297
  ```bash
761
- fclt --help
762
- fclt <command> --help
298
+ fclt sources list
299
+ fclt verify-source skills.sh --json
300
+ fclt sources trust skills.sh --note "reviewed"
301
+ fclt install skills.sh:code-review --as code-review-skills-sh --strict-source-trust
763
302
  ```
764
303
 
765
- ### Root resolution
766
-
767
- `fclt` resolves the canonical root in this order:
768
- 1. `FACULT_ROOT_DIR`
769
- 2. nearest project `.ai` from the current working directory for CLI-facing commands
770
- 3. `~/.ai/.facult/config.json` (`rootDir`)
771
- 4. `~/.ai`
772
- 5. `~/agents/.facult` (or a detected legacy store under `~/agents/`)
773
-
774
- ### Runtime env vars
775
-
776
- - `FACULT_ROOT_DIR`: override canonical store location
777
- - `FACULT_VERSION`: version selector for `scripts/install.sh` (`latest` by default)
778
- - `FACULT_INSTALL_DIR`: install target dir for `scripts/install.sh` (`~/.ai/.facult/bin` by default)
779
- - `FACULT_INSTALL_PM`: force package manager detection for npm bootstrap launcher (`npm` or `bun`)
780
-
781
- ### State and report files
782
-
783
- Under canonical generated AI state (`~/.ai/.facult/` or `<repo>/.ai/.facult/`):
784
- - `sources.json` (latest inventory scan state)
785
- - `consolidated.json` (consolidation state)
786
- - `ai/index.json` (generated canonical AI inventory)
787
- - `audit/static-latest.json` (latest static audit report)
788
- - `audit/agent-latest.json` (latest agent audit report)
789
- - `trust/sources.json` (source trust policy state)
790
-
791
- Under machine-local Facult state:
792
- - `install.json` (machine-local install metadata)
793
- - `global/managed.json` or `projects/<slug-hash>/managed.json` (managed tool state)
794
- - `global/ai/global/writeback/queue.jsonl` and `projects/<slug-hash>/ai/project/writeback/queue.jsonl` (writeback queues)
795
- - `global/ai/global/evolution/` and `projects/<slug-hash>/ai/project/evolution/` (proposal metadata, markdown drafts, and patch artifacts)
796
- - `.../autosync/services/*.json` (autosync service configs)
797
- - `.../autosync/state/*.json` (autosync runtime state)
798
- - `.../autosync/logs/*` (autosync service logs)
799
- - `cache/runtime/<version>/<platform-arch>/...` under the macOS machine-local state root, or `runtime/<version>/<platform-arch>/...` under `FACULT_CACHE_DIR`/XDG cache roots on other platforms (npm launcher binary cache)
800
- - if that cache root is unavailable, the npm launcher falls back to a temp-dir runtime cache before using the bundled source fallback
801
-
802
- Under global Markdown review state (`~/.ai/`):
803
- - `writebacks/global/*.md` and `writebacks/projects/<slug-hash>/*.md` (frontmatter-rich writeback review artifacts)
804
- - `evolution/global/*.md` and `evolution/projects/<slug-hash>/*.md` (frontmatter-rich proposal review artifacts, including latest draft body when present)
805
-
806
- ### Config reference
807
-
808
- `~/.ai/.facult/config.json` supports:
809
- - `rootDir`
810
- - `scanFrom`
811
- - `scanFromIgnore`
812
- - `scanFromNoDefaultIgnore`
813
- - `scanFromMaxVisits`
814
- - `scanFromMaxResults`
815
-
816
- `scanFrom*` settings are used by `scan`/`audit` unless `--no-config-from` is passed.
817
-
818
- Example:
819
- ```json
820
- {
821
- "rootDir": "~/.ai",
822
- "scanFrom": ["~/dev", "~/work"],
823
- "scanFromIgnore": ["vendor", ".venv"],
824
- "scanFromNoDefaultIgnore": false,
825
- "scanFromMaxVisits": 20000,
826
- "scanFromMaxResults": 5000
827
- }
304
+ Audit local capability:
305
+
306
+ ```bash
307
+ fclt audit
308
+ fclt audit --non-interactive --severity high
309
+ fclt audit fix mcp:github
828
310
  ```
829
311
 
830
- ### Source aliases and custom indices
312
+ Keep tracked MCP config secret-free. Use local overlays such as `mcp/servers.local.json` for machine-specific secrets.
831
313
 
832
- Default source aliases:
833
- - `facult` (builtin templates)
834
- - `smithery`
835
- - `glama`
836
- - `skills.sh`
837
- - `clawhub`
314
+ ## Command Map
838
315
 
839
- Custom remote sources can be defined in `~/.ai/.facult/indices.json` (manifest URL, optional integrity, optional signature keys/signature verification settings).
316
+ Discovery:
840
317
 
841
- ## Autosync
318
+ ```bash
319
+ fclt status [--json]
320
+ fclt doctor [--json] [--repair]
321
+ fclt paths [--json]
322
+ fclt scan [--from <path>] [--json] [--show-duplicates]
323
+ fclt inventory [--json] [--tool <name>] [--show-secrets]
324
+ fclt list [skills|mcp|agents|snippets|instructions|automations]
325
+ fclt show <selector>
326
+ fclt find <query>
327
+ fclt graph show <selector>
328
+ fclt graph deps <selector>
329
+ fclt graph dependents <selector>
330
+ ```
842
331
 
843
- `fclt autosync` is the background propagation layer for managed installs.
332
+ Canonical store:
844
333
 
845
- Current v1 behavior:
846
- - macOS LaunchAgent-backed
847
- - immediate local managed-tool sync on the configured canonical root
848
- - periodic git autosync for the canonical repo
849
- - automatic autosync commits with source-tagged commit messages such as:
850
- - `chore(facult-autosync): sync canonical ai changes from <host> [service:all]`
334
+ ```bash
335
+ fclt templates list
336
+ fclt templates init operating-model [--global|--project|--root PATH]
337
+ fclt templates init project-ai
338
+ fclt templates init instruction <name>
339
+ fclt templates init snippet <marker>
340
+ fclt templates init skill <name>
341
+ fclt templates init agent <name>
342
+ fclt consolidate --auto keep-current --from <path>
343
+ fclt index [--force]
344
+ ```
851
345
 
852
- Recommended usage:
346
+ Managed mode:
853
347
 
854
348
  ```bash
855
- fclt autosync install
856
- fclt autosync status
349
+ fclt manage <tool> [--dry-run] [--adopt-existing]
350
+ fclt sync [tool] [--dry-run] [--adopt-live]
351
+ fclt enable <selector> --for codex,claude
352
+ fclt disable <selector> --for codex,claude
353
+ fclt managed
354
+ fclt unmanage <tool>
857
355
  ```
858
356
 
859
- Tool-scoped or project-local usage:
357
+ Writeback and evolution:
860
358
 
861
359
  ```bash
862
- cd /path/to/repo
863
- fclt autosync install codex
864
- fclt autosync status codex
360
+ fclt ai writeback add --kind <kind> --summary <text> --asset <selector>
361
+ fclt ai writeback list|show|group|summarize
362
+ fclt ai evolve propose|list|show|draft|review|accept|reject|apply|promote
865
363
  ```
866
364
 
867
- One-shot runner for verification/debugging:
365
+ Sources, audit, and updates:
868
366
 
869
367
  ```bash
870
- fclt autosync run --service all --once
368
+ fclt search <query>
369
+ fclt install <source:item> [--as <name>] [--strict-source-trust]
370
+ fclt update [--apply]
371
+ fclt sources list|trust|review|block|clear
372
+ fclt verify-source <name>
373
+ fclt audit [--non-interactive]
374
+ fclt self-update
871
375
  ```
872
376
 
873
- Remote git policy:
874
- - do not sync on every file event
875
- - mark the canonical repo dirty on local changes
876
- - on the configured timer, fetch, auto-commit local canonical changes if needed, pull `--rebase`, then push
877
- - if rebase conflicts occur, remote autosync is blocked and reported, but local managed-tool sync keeps running
377
+ Use `fclt --help` and `fclt <command> --help` for exact flags.
878
378
 
879
- ## Commit Hygiene
379
+ ## Documentation
880
380
 
881
- Some MCP config files can contain secrets. Keep local generated artifacts and secret-bearing config files ignored and out of commits.
381
+ Start with:
882
382
 
883
- Recommended practice:
884
- - tracked canonical MCP definitions in `mcp/servers.json` should not inline secrets
885
- - machine-local secrets belong in `mcp/servers.local.json` or `mcp/mcp.local.json`
886
- - global rendered configs under `~/.codex`, `~/.claude`, or similar can contain merged secret values as machine-local runtime output
887
- - repo-local rendered configs should be gitignored; `fclt audit` now flags inline secrets more aggressively when the destination is git-tracked or repo-local and not ignored
383
+ - [Concepts](./docs/concepts.md): roots, scopes, state layers, and asset types
384
+ - [Composable Capability](./docs/composable-capability.md): refs, snippets, instruction templates, and evolvable units
385
+ - [Project `.ai`](./docs/project-ai.md): repo-owned capability and project sync policy
386
+ - [Built-in pack](./docs/built-in-pack.md): packaged work-unit, writeback, and evolution defaults
387
+ - [Writeback and evolution](./docs/writeback-evolution.md): the feedback-loop workflow and review surfaces
388
+ - [Managed mode](./docs/managed-mode.md): when to let `fclt` write tool files
389
+ - [Roadmap](./docs/roadmap.md): current gaps and planned work
888
390
 
889
- ## Contributing
391
+ ## FAQ
890
392
 
891
- Contributor and release workflow details live in [CONTRIBUTING.md](./CONTRIBUTING.md).
393
+ ### Does fclt run an MCP server?
892
394
 
893
- ## FAQ
395
+ Not yet as a first-party runtime. Today, `fclt` is CLI-first. You can scaffold MCP definitions that delegate to the CLI, and a dedicated plugin/MCP surface is on the roadmap.
894
396
 
895
- ### Does fclt run its own MCP server today?
397
+ ### Does fclt have to manage Codex or Claude files?
896
398
 
897
- Not as a first-party `fclt mcp serve` runtime.
399
+ No. You can use `status`, `scan`, `inventory`, `list`, `show`, `graph`, `writeback`, and `evolve` without managed rendering. Use `manage` and `sync` only when `fclt` should write rendered output into a tool home.
898
400
 
899
- `fclt` currently focuses on inventory, trust/audit, install/update, writeback/evolution, and managed sync of canonical AI capability and tool-native outputs. Use the CLI directly from agents, or scaffold an MCP definition that delegates to the CLI when an environment needs an MCP-shaped entrypoint.
401
+ ### Where do project writebacks go?
900
402
 
901
- ### Does fclt now manage global AI config, not just skills and MCP?
403
+ Runtime JSON state stays machine-local. Human-readable review artifacts are mirrored under global `~/.ai/writebacks/projects/<slug-hash>/` and `~/.ai/evolution/projects/<slug-hash>/`, not inside repo-local `<repo>/.ai`.
902
404
 
903
- Yes. The core model now includes:
904
- - canonical user-owned AI source in `~/.ai`
905
- - rendered managed outputs in tool homes such as `~/.codex`, `~/.agents`, and `~/plugins`
906
- - global instruction docs such as `AGENTS.global.md`, rendered by default into `~/.codex/AGENTS.md`, `~/.claude/CLAUDE.md`, and `~/.cursor/AGENTS.md`
907
- - Codex-authored skills in `~/.agents/skills`
908
- - Codex local plugin marketplaces in `~/.agents/plugins/marketplace.json`
909
- - Codex local plugin bundles in `~/plugins/<plugin-name>`
910
- - tool-native configs such as `~/.codex/config.toml`
911
- - tool-native rule files such as `~/.codex/rules/*.rules`
405
+ ### What should be committed?
912
406
 
913
- ### Do I still need to run `fclt sync` manually?
407
+ Commit canonical project assets that belong to the repo: instructions, snippets, skills, agents, MCP definitions without secrets, and project sync policy. Do not commit generated state, machine-local review queues, rendered tool outputs, or secrets.
914
408
 
915
- If autosync is not installed, yes.
409
+ ## Contributing
916
410
 
917
- If autosync is installed, local changes under `~/.ai` propagate automatically to managed tools. Manual `fclt sync` is still useful for explicit repair, dry-runs, and non-daemon workflows.
411
+ Contributor and release workflow details live in [CONTRIBUTING.md](./CONTRIBUTING.md).