facult 2.11.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.
@@ -5,6 +5,7 @@ This machine has a default Facult operating-model layer available.
5
5
  When work produces durable friction, weak verification, stale guidance, or a missing skill/tool capability, preserve that signal with `fclt ai writeback ...` when the target and scope are clear. When repeated writebacks or clearly missing capability point at a concrete improvement, use `fclt ai evolve ...` or the `capability-evolution` skill to make a reviewable proposal.
6
6
 
7
7
  For work-unit framing, read `@builtin/facult-operating-model/instructions/WORK_UNITS.md`.
8
+ For composing refs, snippets, instructions, skills, agents, MCP, and automations as evolvable units, read `@builtin/facult-operating-model/instructions/CAPABILITY_COMPOSITION.md`.
8
9
  For writeback and evolution, read `@builtin/facult-operating-model/instructions/EVOLUTION.md`.
9
10
  For learning and writeback defaults, read `@builtin/facult-operating-model/instructions/LEARNING_AND_WRITEBACK.md`.
10
11
  For deciding whether capability belongs in global or project scope, read `@builtin/facult-operating-model/instructions/PROJECT_CAPABILITY.md`.
@@ -0,0 +1,76 @@
1
+ ---
2
+ description: "Compose small capability units across global and project roots, then evolve the smallest affected unit."
3
+ tags: ["facult", "composition", "refs", "snippets", "instructions"]
4
+ ---
5
+
6
+ # Capability Composition
7
+
8
+ Use `fclt` capability as small units that can be composed, inspected, rendered, and evolved independently.
9
+
10
+ The main units are:
11
+
12
+ - instructions: standalone markdown doctrine such as language preferences, verification rules, or review standards
13
+ - snippets: small markdown partials inserted into one or more rendered docs
14
+ - skills: task-specific workflows with `SKILL.md`
15
+ - agents: focused role manifests
16
+ - MCP definitions: tool interfaces and their safe auth shape
17
+ - automations: scheduled review or maintenance loops
18
+ - tool rules/config: tool-specific defaults and policy
19
+
20
+ ## Composition Rules
21
+
22
+ - Keep reusable doctrine in `instructions/`.
23
+ - Keep repeated paragraphs or policy blocks in `snippets/`.
24
+ - Keep workflow execution in `skills/`.
25
+ - Keep persona or delegation behavior in `agents/`.
26
+ - Keep tool wiring in `mcp/` and `tools/<tool>/`.
27
+ - Compose broad agent docs from refs and snippets instead of copying text by hand.
28
+ - Prefer one narrow reusable unit over one large instruction file that mixes unrelated domains.
29
+
30
+ Examples:
31
+
32
+ - `@ai/instructions/BUN.md` for shared Bun preferences.
33
+ - `@ai/instructions/RUST.md` for shared Rust preferences.
34
+ - `@project/instructions/TESTING.md` for repo-specific test policy.
35
+ - `<!-- fclty:global/codex/baseline -->` for a shared rendered block.
36
+
37
+ ## Scope
38
+
39
+ Use global scope for capability that should follow the user across projects.
40
+
41
+ Use project scope for capability that belongs to a repo, team workflow, architecture, or local test harness.
42
+
43
+ Promote project capability to global only when repeated evidence shows reuse across projects. Do not globalize a project quirk just because it worked once.
44
+
45
+ ## Writeback and Evolution
46
+
47
+ Target the smallest affected unit.
48
+
49
+ - If a paragraph is reused in several rendered docs, target the snippet.
50
+ - If a domain rule is wrong, target the instruction.
51
+ - If a workflow is incomplete, target the skill.
52
+ - If a delegated role is unclear, target the agent.
53
+ - If a tool interface is missing or unsafe, target the MCP or tool config.
54
+ - If a scheduled review loop is noisy or missing context, target the automation.
55
+
56
+ Good writeback targets are graph-backed selectors when possible:
57
+
58
+ ```bash
59
+ fclt ai writeback add --kind missing_context --summary "Bun guidance did not cover test runner selection." --asset instruction:BUN
60
+ fclt ai writeback add --kind reusable_pattern --summary "Project test policy should become a shared verification snippet." --asset @project/instructions/TESTING.md
61
+ fclt ai writeback add --kind bad_default --summary "The review automation escalated one-off preferences." --asset automation:evolution-review
62
+ ```
63
+
64
+ Use `fclt ai evolve ...` only after repeated signal, a clearly missing capability, or a stale canonical asset points at a concrete change. Prefer the smallest valid proposal kind: `update_asset`, `create_asset`, `extract_snippet`, `add_skill`, or `promote_asset`.
65
+
66
+ ## Agent Defaults
67
+
68
+ When an agent sees a repeated preference like "use Bun for JS projects" or "prefer Cargo nextest for Rust tests", it should not bury that in chat. It should identify whether the durable unit is:
69
+
70
+ - a global instruction
71
+ - a project instruction
72
+ - a snippet reused by rendered docs
73
+ - a skill workflow
74
+ - a project-to-global promotion candidate
75
+
76
+ Then it should record writeback against that unit, or draft a proposal when the evidence is already strong enough.
@@ -9,6 +9,8 @@ Use writeback and evolution to improve the AI operating layer itself.
9
9
 
10
10
  Evolution is the synthesis and change side of the feedback loop. It turns accumulated writebacks, repeated tool friction, stale canonical assets, or clearly missing capability into small reviewable changes to instructions, skills, snippets, agents, or other markdown canonical assets.
11
11
 
12
+ Use capability composition when choosing the target. Instructions, snippets, skills, agents, MCP/tool config, and automations are separate units. Target the smallest unit that actually needs to change instead of rewriting a broad agent doc.
13
+
12
14
  ## When To Record Writeback
13
15
 
14
16
  Record writeback when one of these is true:
@@ -60,6 +62,14 @@ Every good writeback should try to include:
60
62
  - the right scope
61
63
  - domain or tags when useful
62
64
 
65
+ Good target examples:
66
+
67
+ - `instruction:BUN` when shared Bun guidance is stale or missing
68
+ - `@project/instructions/TESTING.md` when repo test policy needs project-scoped evolution
69
+ - `snippet:global/lang/bun` when a repeated rendered block should be fixed or extracted
70
+ - `skill:capability-evolution` when a workflow skill is missing steps or examples
71
+ - `automation:evolution-review` when the scheduled review loop is noisy or incomplete
72
+
63
73
  ## Operator Flow
64
74
 
65
75
  Typical workflow:
@@ -88,7 +98,7 @@ Review surfaces:
88
98
 
89
99
  Evolution proposal metadata, markdown drafts, patch artifacts, writeback queues,
90
100
  and journals are runtime state. `fclt` stores JSON queues, proposal records,
91
- draft refs, patches, and journals in machine-local Facult state. It mirrors
101
+ draft refs, patches, and journals in machine-local `fclt` state. It mirrors
92
102
  human-readable review artifacts into global `~/.ai/writebacks/...` and
93
103
  `~/.ai/evolution/...`, including project-scoped artifacts under
94
104
  `projects/<slug-hash>/` with cwd/project metadata in frontmatter. Canonical
@@ -122,6 +132,14 @@ Current supported proposal kinds:
122
132
 
123
133
  Use the smallest durable change that fits the evidence.
124
134
 
135
+ Examples:
136
+
137
+ - `update_asset`: fix a stale instruction, snippet, agent, or automation markdown asset.
138
+ - `create_asset`: add a missing instruction such as `BUN.md` or `RUST.md`.
139
+ - `extract_snippet`: move repeated guidance out of several docs into one snippet.
140
+ - `add_skill`: create a workflow when instructions are not enough.
141
+ - `promote_asset`: move a proven project instruction/snippet/skill toward global reuse.
142
+
125
143
  ## Review And Apply Rules
126
144
 
127
145
  - draft before apply
@@ -29,7 +29,7 @@ fclt ai writeback add --kind <kind> --summary "<summary>" --asset <asset-selecto
29
29
  ```
30
30
 
31
31
  The writeback queue is runtime state, not canonical source. `fclt` stores JSON
32
- queue state in machine-local Facult state so sandboxed agents can record durable
32
+ queue state in machine-local `fclt` state so sandboxed agents can record durable
33
33
  friction without mutating canonical assets unless an evolution proposal is later
34
34
  reviewed and applied.
35
35
 
@@ -45,6 +45,15 @@ Project-scoped writebacks should usually be recorded from the repo that produced
45
45
  the evidence. Global writebacks should be reserved for shared doctrine, shared
46
46
  skills, shared agents, tool behavior, or cross-project capability gaps.
47
47
 
48
+ Target the smallest composable unit that explains the friction:
49
+
50
+ - instruction: domain guidance, preferences, verification rules, or review doctrine
51
+ - snippet: repeated markdown block used by more than one rendered doc
52
+ - skill: workflow execution steps or examples
53
+ - agent: delegated role behavior
54
+ - MCP/tool config: tool interface, auth shape, or rendered integration
55
+ - automation: scheduled review loop, cadence, prompt, or memory
56
+
48
57
  ## Record Writeback When
49
58
 
50
59
  - the same failure or weak loop appears again
@@ -54,6 +63,7 @@ skills, shared agents, tool behavior, or cross-project capability gaps.
54
63
  - a cross-project behavior probably belongs in global capability
55
64
  - a skill, tool, MCP, plugin, automation, or instruction gap repeatedly slows work down
56
65
  - an agent has to restate the same workaround, verification rule, or review rule
66
+ - a repeated preference should become an atomic instruction such as `BUN.md`, `RUST.md`, or a project-specific testing policy
57
67
 
58
68
  ## Do Not Record Writeback For
59
69
 
package/docs/README.md CHANGED
@@ -1,18 +1,29 @@
1
1
  # fclt Documentation
2
2
 
3
- These docs explain the product model behind `fclt`. The root [README](../README.md) is the quick start and command reference. The files here explain why the pieces exist and how they fit together.
3
+ These docs explain how `fclt` stores, inspects, composes, renders, and improves AI capability.
4
4
 
5
- Start here:
5
+ Start with the root [README](../README.md) for installation and first workflows. Use these guides when you need the model, safety rules, or command details.
6
+
7
+ The concepts guide includes the [feedback-loop diagram](./assets/fclt-capability-loop.png) that explains why `fclt` exists: setup once, let agents preserve friction, then review the changes that should improve future work.
8
+
9
+ ## Guides
6
10
 
7
11
  - [Concepts](./concepts.md): canonical roots, generated state, rendered outputs, scopes, and asset types.
8
- - [Managed Mode](./managed-mode.md): when to let `fclt` write tool files, and how adoption works.
12
+ - [Composable Capability](./composable-capability.md): refs, snippets, instruction templates, and evolvable units.
9
13
  - [Project `.ai`](./project-ai.md): how repo-local capability works without leaking project review state into the repo.
10
- - [Built-In Pack](./built-in-pack.md): the packaged operating-model layer for writeback and evolution.
11
- - [Writeback And Evolution](./writeback-evolution.md): how real-work friction becomes reviewable capability changes.
12
- - [Roadmap](./roadmap.md): current product gaps and non-goals.
14
+ - [Built-in pack](./built-in-pack.md): the packaged operating-model layer for writeback and evolution.
15
+ - [Writeback and evolution](./writeback-evolution.md): how real-work friction becomes reviewable capability changes.
16
+ - [Managed mode](./managed-mode.md): when to let `fclt` write tool files, and how adoption works.
17
+ - [Security and trust](./security-trust.md): source trust, audit, secrets, and commit hygiene.
18
+ - [Automations](./automations.md): recurring Codex loops for learning review, evolution review, and tool-call audit.
19
+ - [Command reference](./reference.md): command groups and common flags.
20
+ - [Roadmap](./roadmap.md): current product gaps and planned work.
13
21
 
14
- ## Documentation Policy
22
+ ## Reading Order
15
23
 
16
- Public docs should use generic examples. Do not include personal account names, private customer names, local machine paths, secret values, or project-specific operating notes. Use placeholders such as `/path/to/repo`, `example.com`, and `~/.ai`.
24
+ New users should read:
17
25
 
18
- Machine-local state and review artifacts can contain project metadata. `fclt` keeps those artifacts in machine-local Facult state and global `~/.ai/writebacks` / `~/.ai/evolution` review directories, not in repo-local project `.ai` directories.
26
+ - [Concepts](./concepts.md)
27
+ - [Project `.ai`](./project-ai.md) if working in a repo
28
+ - [Managed mode](./managed-mode.md) only before allowing `fclt` to write tool files
29
+ - [Writeback and evolution](./writeback-evolution.md) before setting up feedback loops
@@ -0,0 +1,68 @@
1
+ # Automations
2
+
3
+ `fclt` can scaffold Codex automations that run the feedback loop on a schedule.
4
+
5
+ Use automations for review and synthesis, not for bypassing review. They should preserve useful signal, group repeated patterns, and draft proposals only when the target is concrete.
6
+
7
+ ## Templates
8
+
9
+ Learning review:
10
+
11
+ ```bash
12
+ fclt templates init automation learning-review \
13
+ --scope project \
14
+ --project-root /path/to/repo \
15
+ --status PAUSED
16
+ ```
17
+
18
+ Evolution review:
19
+
20
+ ```bash
21
+ fclt templates init automation evolution-review \
22
+ --scope wide \
23
+ --cwds /path/to/repo-a,/path/to/repo-b \
24
+ --status PAUSED
25
+ ```
26
+
27
+ Tool-call audit:
28
+
29
+ ```bash
30
+ fclt templates init automation tool-call-audit \
31
+ --scope project \
32
+ --project-root /path/to/repo \
33
+ --status PAUSED
34
+ ```
35
+
36
+ ## Scopes
37
+
38
+ - `project`: one repo. Use this for repo-specific writeback, verification, and tool friction.
39
+ - `wide`: a small related set of repos. Use this for shared capability review.
40
+ - `global`: global capability and shared agent behavior.
41
+
42
+ Keep wide scopes intentionally small. A good automation should preserve source boundaries instead of mixing unrelated repos into one vague proposal.
43
+
44
+ ## Output
45
+
46
+ Automation files are written to:
47
+
48
+ ```text
49
+ ~/.codex/automations/<name>/automation.toml
50
+ ~/.codex/automations/<name>/memory.md
51
+ ```
52
+
53
+ When Codex is managed by `fclt`, canonical automation sources can live under:
54
+
55
+ ```text
56
+ ~/.ai/automations/<name>/
57
+ <repo>/.ai/automations/<name>/
58
+ ```
59
+
60
+ Project-scoped automation sources are default-deny for managed sync. Add their names to `[project_sync.codex].automations` before project managed sync can render them into the shared live Codex automation store.
61
+
62
+ ## Suggested Cadence
63
+
64
+ - daily or per-project `learning-review` for durable signal
65
+ - weekly `evolution-review` for proposal triage
66
+ - targeted `tool-call-audit` when tool failures, missing skills, or shallow-success patterns repeat
67
+
68
+ High-risk global changes should still move through proposal review before apply.
@@ -1,4 +1,4 @@
1
- # Built-In Pack
1
+ # Built-in Pack
2
2
 
3
3
  `fclt` ships an operating-model pack:
4
4
 
@@ -6,13 +6,14 @@
6
6
  assets/packs/facult-operating-model/
7
7
  ```
8
8
 
9
- It provides a default feedback loop for agents that use `fclt`.
9
+ It provides default guidance for agents that use `fclt`: define the work, verify it, record durable feedback, and turn repeated signal into reviewed changes.
10
10
 
11
11
  ## Included Assets
12
12
 
13
13
  Instructions:
14
14
 
15
15
  - `WORK_UNITS.md`
16
+ - `CAPABILITY_COMPOSITION.md`
16
17
  - `LEARNING_AND_WRITEBACK.md`
17
18
  - `EVOLUTION.md`
18
19
  - `PROJECT_CAPABILITY.md`
@@ -79,13 +80,20 @@ sync_defaults = false
79
80
 
80
81
  ## Design Rule
81
82
 
82
- The built-in pack should stay small. It should teach:
83
+ The built-in pack should stay small. It teaches:
83
84
 
84
85
  - work-unit discipline
86
+ - composable refs, snippets, instructions, skills, agents, MCP, and automations
85
87
  - verification
86
88
  - writeback
87
89
  - evolution proposal review
88
90
  - project/global scope decisions
89
91
  - managed-mode ownership boundaries
90
92
 
91
- It should not become a pile of preferences. Put project-specific behavior in project `.ai`; promote to global only when repeated evidence proves reuse.
93
+ Keep project-specific behavior in project `.ai`. Promote it only when repeated evidence shows it is reusable outside that project.
94
+
95
+ ## Next
96
+
97
+ - Read [Composable Capability](./composable-capability.md) for refs, snippets, and instruction templates.
98
+ - Read [Writeback and evolution](./writeback-evolution.md) for the feedback loop.
99
+ - Read [Managed mode](./managed-mode.md) before rendering the pack into a tool home.
@@ -0,0 +1,178 @@
1
+ # Composable Capability
2
+
3
+ `fclt` treats AI behavior as small capability units that can be composed into larger agent instructions and evolved independently.
4
+
5
+ This prevents one giant agent file from becoming the only place to put every preference, workflow, and exception. A language preference can live in one instruction. A repeated rendered block can live in one snippet. A workflow can live in one skill. Each unit can receive targeted writeback and targeted evolution.
6
+
7
+ This is the core model:
8
+
9
+ - write domain guidance once
10
+ - compose it with refs and snippets
11
+ - render it only where a tool should receive it
12
+ - target writeback at the smallest unit that needs to change
13
+
14
+ ## Units
15
+
16
+ Use `instructions/` for reusable markdown doctrine.
17
+
18
+ Examples:
19
+
20
+ ```text
21
+ ~/.ai/instructions/BUN.md
22
+ ~/.ai/instructions/RUST.md
23
+ <repo>/.ai/instructions/TESTING.md
24
+ ```
25
+
26
+ Use `snippets/` for partial blocks inserted into rendered docs.
27
+
28
+ Examples:
29
+
30
+ ```text
31
+ ~/.ai/snippets/global/codex/baseline.md
32
+ ~/.ai/snippets/global/lang/bun.md
33
+ <repo>/.ai/snippets/global/project/testing.md
34
+ ```
35
+
36
+ Use `skills/` for executable workflows, `agents/` for delegated roles, `mcp/` for tool interfaces, and `automations/` for scheduled loops.
37
+
38
+ ## Refs
39
+
40
+ Canonical refs let a markdown asset point at another asset without hard-coding machine paths:
41
+
42
+ ```text
43
+ @ai/instructions/BUN.md
44
+ @project/instructions/TESTING.md
45
+ @builtin/facult-operating-model/instructions/WORK_UNITS.md
46
+ ```
47
+
48
+ Use global refs for reusable user-owned capability. Use project refs for repo-owned capability. Use built-in refs for packaged defaults.
49
+
50
+ Config-backed refs are useful when the concrete path should be named in `config.toml`:
51
+
52
+ ```toml
53
+ version = 1
54
+
55
+ [refs]
56
+ language_defaults = "@ai/instructions/BUN.md"
57
+ project_testing = "@project/instructions/TESTING.md"
58
+ ```
59
+
60
+ Rendered markdown can use those refs through the render context when a tool adapter supports that target.
61
+
62
+ ## Snippets
63
+
64
+ Snippets use paired HTML markers:
65
+
66
+ ```md
67
+ <!-- fclty:global/lang/bun -->
68
+ <!-- /fclty:global/lang/bun -->
69
+ ```
70
+
71
+ The marker above resolves to:
72
+
73
+ ```text
74
+ snippets/global/lang/bun.md
75
+ ```
76
+
77
+ Create and inspect snippets with:
78
+
79
+ ```bash
80
+ fclt templates init snippet global/lang/bun
81
+ fclt snippets list
82
+ fclt snippets show global/lang/bun
83
+ fclt snippets sync --dry-run AGENTS.global.md
84
+ ```
85
+
86
+ Use snippets when the same block appears in more than one rendered doc, or when a stable block should be independently targetable by writeback and evolution.
87
+
88
+ ## Instruction Templates
89
+
90
+ Create a new instruction scaffold with:
91
+
92
+ ```bash
93
+ fclt templates init instruction BUN
94
+ fclt templates init instruction lang/RUST
95
+ ```
96
+
97
+ That writes:
98
+
99
+ ```text
100
+ instructions/BUN.md
101
+ instructions/lang/RUST.md
102
+ ```
103
+
104
+ An instruction can include refs, snippet markers, examples, and writeback targeting guidance. Keep one instruction focused on one reusable domain. For example:
105
+
106
+ - `BUN.md`: JavaScript runtime/package/test preferences.
107
+ - `RUST.md`: Rust formatting, linting, and test preferences.
108
+ - `WRITING.md`: voice and editorial rules.
109
+ - `VERIFICATION.md`: proof standards.
110
+
111
+ ## Composition Pattern
112
+
113
+ A global `AGENTS.global.md` can stay short and compose units:
114
+
115
+ ```md
116
+ # Global Agent Instructions
117
+
118
+ For work-unit framing, read `@ai/instructions/WORK_UNITS.md`.
119
+ For JS/Bun projects, read `@ai/instructions/BUN.md`.
120
+ For Rust projects, read `@ai/instructions/RUST.md`.
121
+
122
+ <!-- fclty:global/codex/baseline -->
123
+ <!-- /fclty:global/codex/baseline -->
124
+ ```
125
+
126
+ A project can add narrower guidance:
127
+
128
+ ```md
129
+ # Project Agent Instructions
130
+
131
+ For project test policy, read `@project/instructions/TESTING.md`.
132
+ For local deployment rules, read `@project/instructions/DEPLOYMENT.md`.
133
+ ```
134
+
135
+ This keeps global defaults reusable and lets projects override or extend them without rewriting the whole global file.
136
+
137
+ ## Evolution
138
+
139
+ Target the smallest unit that actually needs to change:
140
+
141
+ - bad or stale domain guidance: update the instruction
142
+ - repeated block copied in several docs: extract a snippet
143
+ - missing workflow: add or update a skill
144
+ - unclear delegation behavior: update an agent
145
+ - tool integration gap: update MCP/tool config or create a tooling task
146
+ - project-local pattern that proved reusable: promote the asset
147
+
148
+ Examples:
149
+
150
+ ```bash
151
+ fclt ai writeback add --kind missing_context --summary "Bun guidance did not cover test runner selection." --asset instruction:BUN
152
+ fclt ai writeback add --kind reusable_pattern --summary "Project testing policy should become a shared verification snippet." --asset @project/instructions/TESTING.md
153
+ fclt ai evolve propose
154
+ ```
155
+
156
+ Do not create a global proposal for one-off taste. Use writeback to preserve evidence, then evolve when the signal repeats or the missing capability is already clear.
157
+
158
+ ## Review
159
+
160
+ Use these surfaces:
161
+
162
+ ```bash
163
+ fclt list instructions --global
164
+ fclt list snippets --global
165
+ fclt show instruction:BUN
166
+ fclt graph deps AGENTS.global.md
167
+ fclt graph dependents @ai/instructions/BUN.md
168
+ fclt ai writeback group --by asset
169
+ fclt ai evolve list
170
+ ```
171
+
172
+ Open `~/.ai/writebacks/` and `~/.ai/evolution/` in a markdown editor to inspect review artifacts with frontmatter status, scope, targets, project metadata, evidence, and proposal state.
173
+
174
+ ## Next
175
+
176
+ - Read [Writeback and evolution](./writeback-evolution.md) for proposal flow.
177
+ - Read [Built-in Pack](./built-in-pack.md) for packaged defaults.
178
+ - Use [Command reference](./reference.md) for template and graph commands.
package/docs/concepts.md CHANGED
@@ -4,6 +4,10 @@
4
4
 
5
5
  The important distinction is ownership. A file can be source, generated state, machine runtime state, a rendered output, or a review artifact. Treating those as separate layers prevents sync surprises.
6
6
 
7
+ ![fclt capability loop: setup, capability, agents, work units, writebacks, evolution, approval, and better future agents](./assets/fclt-capability-loop.png)
8
+
9
+ The intended operating model is agent-led after setup. Users install and approve broad changes; agents inspect capability, run work units, record durable friction, and use repeated signal to propose small improvements.
10
+
7
11
  ## Roots And Scopes
8
12
 
9
13
  Global root:
@@ -66,7 +70,7 @@ Examples:
66
70
  ~/.ai/.facult/ai/graph.json
67
71
  ```
68
72
 
69
- Project generated state lives in machine-local Facult state, not in the repo.
73
+ Project generated state lives in machine-local `fclt` state, not in the repo.
70
74
 
71
75
  Machine runtime state records local behavior and history.
72
76
 
@@ -111,6 +115,8 @@ Common canonical asset types:
111
115
 
112
116
  Not every asset must be rendered into every tool. Use inventory and policy first, then managed sync only where `fclt` should own the rendered output.
113
117
 
118
+ For concrete composition patterns, see [Composable Capability](./composable-capability.md).
119
+
114
120
  ## Feedback Loop
115
121
 
116
122
  The durable loop is:
@@ -121,3 +127,9 @@ The durable loop is:
121
127
  4. Draft the smallest valid proposal.
122
128
  5. Review and apply accepted changes to canonical source.
123
129
  6. Re-index and sync only the surfaces that should receive the change.
130
+
131
+ ## Next
132
+
133
+ - Read [Project `.ai`](./project-ai.md) before adding repo-local capability.
134
+ - Read [Managed mode](./managed-mode.md) before allowing `fclt` to write tool files.
135
+ - Read [Composable Capability](./composable-capability.md) to split guidance into instructions, snippets, skills, agents, MCP, and automations.
@@ -1,4 +1,4 @@
1
- # Managed Mode
1
+ # Managed mode
2
2
 
3
3
  Managed mode is optional. Use it when you want `fclt` to write rendered files into a tool home. Do not use it just to inspect or normalize existing tool-native state.
4
4
 
@@ -37,9 +37,9 @@ When live content differs from canonical content:
37
37
  - rendered docs/config with local edits are skipped unless an explicit conflict option allows overwrite
38
38
  - built-in rendered defaults require `--builtin-conflicts overwrite` before replacing local edits
39
39
 
40
- This is deliberate. Managed mode should be boring and reversible.
40
+ This is deliberate. Managed mode should be predictable and reversible.
41
41
 
42
- ## Project Managed Mode
42
+ ## Project managed mode
43
43
 
44
44
  Project sync is default-deny. A project `.ai` root can exist without rendering anything into repo-local tool outputs.
45
45
 
@@ -60,7 +60,7 @@ tool_config = true
60
60
 
61
61
  If a repo-local `.ai` contains only generated state and no canonical assets, `fclt status --project` reports a generated-only warning and `fclt sync --project` skips. Initialize or restore canonical source before syncing managed project output.
62
62
 
63
- ## When Not To Use Managed Mode
63
+ ## When not to use managed mode
64
64
 
65
65
  Do not use managed mode when:
66
66
 
@@ -71,3 +71,9 @@ Do not use managed mode when:
71
71
  - you are debugging and need read-only evidence first
72
72
 
73
73
  Use `fclt inventory`, `scan`, `list`, `show`, `graph`, `status`, and `audit` instead.
74
+
75
+ ## Next
76
+
77
+ - Read [Project `.ai`](./project-ai.md) for repo-local sync policy.
78
+ - Read [Security and trust](./security-trust.md) for MCP secrets and audit.
79
+ - Use [Command reference](./reference.md) for common managed-mode commands.
@@ -1,6 +1,6 @@
1
1
  # Project `.ai`
2
2
 
3
- A project `.ai` root stores repo-owned capability. It is not a dumping ground for generated state, review queues, or private local context.
3
+ A project `.ai` root stores repo-owned capability. It is for source that should travel with the codebase, not for generated state, review queues, or private local context.
4
4
 
5
5
  Create one with:
6
6
 
@@ -44,11 +44,11 @@ Do not put these in project `.ai`:
44
44
  - secrets
45
45
  - private review artifacts
46
46
 
47
- Project-scoped writebacks and evolution proposals are stored in machine-local Facult state and mirrored for review under global `~/.ai/writebacks/projects/<slug-hash>/` and `~/.ai/evolution/projects/<slug-hash>/`.
47
+ Project-scoped writebacks and evolution proposals are stored in machine-local `fclt` state and mirrored for review under global `~/.ai/writebacks/projects/<slug-hash>/` and `~/.ai/evolution/projects/<slug-hash>/`.
48
48
 
49
- ## Generated-Only Roots
49
+ ## Migration From Generated-Only Roots
50
50
 
51
- Older versions could leave `<repo>/.ai/.facult/ai/index.json` and `graph.json` behind without any canonical source. That makes the repo look like it has project AI state even though there is nothing durable to render.
51
+ Some repos may contain `<repo>/.ai/.facult/ai/index.json` and `graph.json` without any canonical source. That makes the repo look like it has project AI state even though there is nothing durable to render.
52
52
 
53
53
  Current behavior:
54
54
 
@@ -79,6 +79,12 @@ tool_config = true
79
79
 
80
80
  This includes inherited global assets. If a global skill should appear in project-managed Codex output, list it explicitly.
81
81
 
82
+ ## Next
83
+
84
+ - Read [Concepts](./concepts.md) for source, generated state, machine-local state, and rendered outputs.
85
+ - Read [Managed mode](./managed-mode.md) before syncing project assets into tool outputs.
86
+ - Read [Security and trust](./security-trust.md) before committing MCP config.
87
+
82
88
  ## Verification
83
89
 
84
90
  Use these commands after changing project `.ai`: