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.
- package/README.md +215 -688
- package/assets/packs/facult-operating-model/AGENTS.global.md +1 -0
- package/assets/packs/facult-operating-model/instructions/CAPABILITY_COMPOSITION.md +76 -0
- package/assets/packs/facult-operating-model/instructions/EVOLUTION.md +19 -1
- package/assets/packs/facult-operating-model/instructions/LEARNING_AND_WRITEBACK.md +11 -1
- package/docs/README.md +20 -9
- package/docs/assets/fclt-capability-loop.png +0 -0
- package/docs/automations.md +68 -0
- package/docs/built-in-pack.md +12 -4
- package/docs/composable-capability.md +178 -0
- package/docs/concepts.md +13 -1
- package/docs/managed-mode.md +10 -4
- package/docs/project-ai.md +10 -4
- package/docs/reference.md +112 -0
- package/docs/roadmap.md +18 -7
- package/docs/security-trust.md +89 -0
- package/docs/writeback-evolution.md +10 -2
- package/package.json +2 -1
- package/src/builtin-assets.ts +1 -1
- package/src/doctor.ts +307 -5
- package/src/index.ts +6 -0
- package/src/paths-command.ts +223 -0
- package/src/remote-types.ts +18 -2
- package/src/remote.ts +211 -6
|
@@ -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
|
|
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
|
|
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
|
|
3
|
+
These docs explain how `fclt` stores, inspects, composes, renders, and improves AI capability.
|
|
4
4
|
|
|
5
|
-
Start
|
|
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
|
-
- [
|
|
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-
|
|
11
|
-
- [Writeback
|
|
12
|
-
- [
|
|
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
|
-
##
|
|
22
|
+
## Reading Order
|
|
15
23
|
|
|
16
|
-
|
|
24
|
+
New users should read:
|
|
17
25
|
|
|
18
|
-
|
|
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
|
|
Binary file
|
|
@@ -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.
|
package/docs/built-in-pack.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Built-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
+

|
|
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
|
|
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.
|
package/docs/managed-mode.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Managed
|
|
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
|
|
40
|
+
This is deliberate. Managed mode should be predictable and reversible.
|
|
41
41
|
|
|
42
|
-
## Project
|
|
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
|
|
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.
|
package/docs/project-ai.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Project `.ai`
|
|
2
2
|
|
|
3
|
-
A project `.ai` root stores repo-owned capability. It is
|
|
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
|
|
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
|
-
|
|
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`:
|