facult 2.10.0 → 2.12.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 +62 -10
- package/assets/packs/facult-operating-model/AGENTS.global.md +2 -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 +10 -0
- package/assets/packs/facult-operating-model/instructions/WORK_UNITS.md +61 -0
- package/docs/README.md +19 -0
- package/docs/built-in-pack.md +93 -0
- package/docs/composable-capability.md +170 -0
- package/docs/concepts.md +125 -0
- package/docs/managed-mode.md +73 -0
- package/docs/project-ai.md +91 -0
- package/docs/roadmap.md +56 -0
- package/docs/writeback-evolution.md +97 -0
- package/package.json +2 -1
- package/src/builtin-assets.ts +1 -1
- package/src/remote-types.ts +18 -2
- package/src/remote.ts +291 -18
package/README.md
CHANGED
|
@@ -13,9 +13,6 @@
|
|
|
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">
|
|
15
15
|
</a>
|
|
16
|
-
<a aria-label="X" href="https://x.com/dimitrikennedy">
|
|
17
|
-
<img alt="Follow on X" src="https://img.shields.io/twitter/follow/dimitrikennedy?style=social">
|
|
18
|
-
</a>
|
|
19
16
|
</div>
|
|
20
17
|
|
|
21
18
|
<p align="center">
|
|
@@ -118,6 +115,13 @@ fclt templates init project-ai
|
|
|
118
115
|
fclt index
|
|
119
116
|
```
|
|
120
117
|
|
|
118
|
+
If you want a concrete copy of the built-in operating-model pack without managing a tool:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
fclt templates init operating-model --global
|
|
122
|
+
fclt templates init operating-model --root /path/to/.ai
|
|
123
|
+
```
|
|
124
|
+
|
|
121
125
|
### 3. Import existing skills or config
|
|
122
126
|
|
|
123
127
|
```bash
|
|
@@ -206,14 +210,28 @@ Useful AI behavior is composable. You need small reusable parts, a clean way to
|
|
|
206
210
|
|
|
207
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`.
|
|
208
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
|
+
|
|
209
225
|
## Built-in Defaults
|
|
210
226
|
|
|
211
227
|
`fclt` includes a built-in layer for writeback and evolution. By default, that layer provides:
|
|
212
|
-
- instructions for learning/writeback, evolution, integration, and project capability
|
|
228
|
+
- instructions for work units, capability composition, learning/writeback, evolution, integration, and project capability
|
|
213
229
|
- agents such as `writeback-curator`, `evolution-planner`, and `scope-promoter`
|
|
214
230
|
- skills such as `capability-evolution` and `project-operating-layer-design`
|
|
215
231
|
|
|
216
|
-
Those built-in defaults
|
|
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.
|
|
217
235
|
|
|
218
236
|
The intended feedback loop is:
|
|
219
237
|
1. agents notice durable friction, weak verification, stale guidance, or missing capability during normal work
|
|
@@ -222,6 +240,8 @@ The intended feedback loop is:
|
|
|
222
240
|
4. only repeated evidence, a clearly missing capability, or a stale canonical asset becomes an evolution proposal
|
|
223
241
|
5. accepted proposals update canonical markdown assets, skills, snippets, or project/global instructions
|
|
224
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
|
+
|
|
225
245
|
If you want to disable default built-in sync for one canonical root:
|
|
226
246
|
|
|
227
247
|
```toml
|
|
@@ -238,14 +258,17 @@ Put that in `config.toml` or `config.local.toml` under the active canonical root
|
|
|
238
258
|
`fclt` is CLI-first. The practical setup is:
|
|
239
259
|
1. Install `fclt` globally so any agent runtime can execute it.
|
|
240
260
|
2. Use `fclt inventory`, `fclt list`, and `fclt consolidate` to inspect and normalize existing tool-native state.
|
|
241
|
-
3.
|
|
242
|
-
4.
|
|
243
|
-
5.
|
|
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`.
|
|
244
265
|
|
|
245
266
|
```bash
|
|
246
267
|
# Scaffold reusable templates in the canonical store
|
|
247
268
|
fclt templates init agents
|
|
248
269
|
fclt templates init agent review-operator
|
|
270
|
+
fclt templates init instruction BUN
|
|
271
|
+
fclt templates init snippet global/lang/bun
|
|
249
272
|
fclt templates init skill facult-manager
|
|
250
273
|
|
|
251
274
|
# Enable that skill for managed tools
|
|
@@ -269,7 +292,7 @@ The supported review surface today is the CLI plus generated Codex automation te
|
|
|
269
292
|
|
|
270
293
|
## Mental Model
|
|
271
294
|
|
|
272
|
-
`fclt` treats both `~/.ai` and `<repo>/.ai` as canonical stores. The global store is for
|
|
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.
|
|
273
296
|
|
|
274
297
|
Typical layout:
|
|
275
298
|
|
|
@@ -412,6 +435,33 @@ fclt snippets sync [--dry-run] [file...]
|
|
|
412
435
|
|
|
413
436
|
Snippets are already used during global Codex `AGENTS.md` rendering.
|
|
414
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:
|
|
449
|
+
|
|
450
|
+
```text
|
|
451
|
+
@ai/instructions/BUN.md
|
|
452
|
+
@project/instructions/TESTING.md
|
|
453
|
+
@builtin/facult-operating-model/instructions/WORK_UNITS.md
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
Use snippets when a repeated block should be inserted into rendered docs and evolved independently:
|
|
457
|
+
|
|
458
|
+
```md
|
|
459
|
+
<!-- fclty:global/lang/bun -->
|
|
460
|
+
<!-- /fclty:global/lang/bun -->
|
|
461
|
+
```
|
|
462
|
+
|
|
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
|
+
|
|
415
465
|
### Graph inspection
|
|
416
466
|
|
|
417
467
|
The generated graph in `.ai/.facult/ai/graph.json` is queryable directly:
|
|
@@ -622,10 +672,12 @@ fclt sources clear <source>
|
|
|
622
672
|
- Templates and snippets
|
|
623
673
|
```bash
|
|
624
674
|
fclt templates list
|
|
675
|
+
fclt templates init operating-model [--global|--project|--root PATH] [--force] [--dry-run]
|
|
625
676
|
fclt templates init project-ai
|
|
626
677
|
fclt templates init skill <name>
|
|
627
678
|
fclt templates init mcp <name>
|
|
628
679
|
fclt templates init agent <name>
|
|
680
|
+
fclt templates init instruction <name>
|
|
629
681
|
fclt templates init snippet <marker>
|
|
630
682
|
fclt templates init agents
|
|
631
683
|
fclt templates init automation <template-id> --scope global|project|wide [--name <name>] [--project-root <path>] [--cwds <path1,path2>] [--rrule <RRULE>] [--status PAUSED|ACTIVE]
|
|
@@ -849,7 +901,7 @@ Not as a first-party `fclt mcp serve` runtime.
|
|
|
849
901
|
### Does fclt now manage global AI config, not just skills and MCP?
|
|
850
902
|
|
|
851
903
|
Yes. The core model now includes:
|
|
852
|
-
- canonical
|
|
904
|
+
- canonical user-owned AI source in `~/.ai`
|
|
853
905
|
- rendered managed outputs in tool homes such as `~/.codex`, `~/.agents`, and `~/plugins`
|
|
854
906
|
- global instruction docs such as `AGENTS.global.md`, rendered by default into `~/.codex/AGENTS.md`, `~/.claude/CLAUDE.md`, and `~/.cursor/AGENTS.md`
|
|
855
907
|
- Codex-authored skills in `~/.agents/skills`
|
|
@@ -4,6 +4,8 @@ This machine has a default Facult operating-model layer available.
|
|
|
4
4
|
|
|
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
|
+
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`.
|
|
7
9
|
For writeback and evolution, read `@builtin/facult-operating-model/instructions/EVOLUTION.md`.
|
|
8
10
|
For learning and writeback defaults, read `@builtin/facult-operating-model/instructions/LEARNING_AND_WRITEBACK.md`.
|
|
9
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:
|
|
@@ -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
|
|
@@ -129,6 +147,6 @@ Use the smallest durable change that fits the evidence.
|
|
|
129
147
|
- prefer the smallest safe change
|
|
130
148
|
- keep reviewable evidence tied to source writebacks
|
|
131
149
|
- do not globalize project behavior too early
|
|
132
|
-
- do not apply high-risk global instruction, skill, plugin, or
|
|
150
|
+
- do not apply high-risk global instruction, skill, plugin, or shared-tool changes without explicit review/approval
|
|
133
151
|
|
|
134
152
|
Apply is for markdown canonical assets only. If the target is wrong, revise the proposal rather than forcing it through.
|
|
@@ -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
|
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Define work units so agent tasks have a clear goal, evidence path, artifact, and writeback target."
|
|
3
|
+
tags: ["work-units", "planning", "verification", "writeback"]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Work Units
|
|
7
|
+
|
|
8
|
+
A work unit is the smallest coherent unit of agent work that can be understood, verified, and preserved.
|
|
9
|
+
|
|
10
|
+
It is not just the user's latest sentence. It is the operational shape around that sentence: what is being changed, why it matters, what evidence is needed, what artifact should remain, and how future agents should benefit from the result.
|
|
11
|
+
|
|
12
|
+
## Minimum Contract
|
|
13
|
+
|
|
14
|
+
A well-formed work unit names:
|
|
15
|
+
|
|
16
|
+
- goal: the outcome the user needs
|
|
17
|
+
- acceptance criteria: what must be true when the work is done
|
|
18
|
+
- required context: source files, docs, systems, messages, or prior decisions needed for correctness
|
|
19
|
+
- constraints: permissions, privacy, compatibility, deadlines, ownership, or scope limits
|
|
20
|
+
- signals or evidence: checks that can confirm progress or falsify assumptions
|
|
21
|
+
- output artifact: code, docs, proposal, issue, note, draft, or report
|
|
22
|
+
- verification path: commands, review surfaces, manual checks, or source-of-truth reads
|
|
23
|
+
- writeback target: where durable learning belongs if the work teaches something reusable
|
|
24
|
+
|
|
25
|
+
If one of these is missing and the gap blocks correctness, surface the gap early and recover it before moving faster.
|
|
26
|
+
|
|
27
|
+
## Why It Exists
|
|
28
|
+
|
|
29
|
+
Work-unit framing prevents shallow completion. It helps agents avoid:
|
|
30
|
+
|
|
31
|
+
- changing files before understanding the target
|
|
32
|
+
- treating a weak green signal as proof
|
|
33
|
+
- losing reusable learning in chat
|
|
34
|
+
- creating duplicate tasks or proposals
|
|
35
|
+
- turning one-off preferences into global rules
|
|
36
|
+
- pushing project-specific details into global capability
|
|
37
|
+
|
|
38
|
+
## How To Use It
|
|
39
|
+
|
|
40
|
+
For simple tasks, keep the work unit implicit but still verify the result.
|
|
41
|
+
|
|
42
|
+
For ambiguous, high-impact, or multi-step tasks, make the work unit explicit before executing. A compact form is enough:
|
|
43
|
+
|
|
44
|
+
```text
|
|
45
|
+
Goal:
|
|
46
|
+
Acceptance:
|
|
47
|
+
Context:
|
|
48
|
+
Constraints:
|
|
49
|
+
Evidence:
|
|
50
|
+
Artifact:
|
|
51
|
+
Verification:
|
|
52
|
+
Writeback:
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Use the smallest framing that makes the task correct. Do not turn every request into paperwork.
|
|
56
|
+
|
|
57
|
+
## Writeback
|
|
58
|
+
|
|
59
|
+
When the work reveals durable friction, missing capability, stale guidance, or a repeatable workflow, prefer one strong writeback over many weak ones.
|
|
60
|
+
|
|
61
|
+
Use `fclt ai writeback add ...` when the target asset, scope, and evidence are clear. Use `fclt ai evolve ...` only when repeated signal supports a concrete proposal.
|
package/docs/README.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# fclt Documentation
|
|
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.
|
|
4
|
+
|
|
5
|
+
Start here:
|
|
6
|
+
|
|
7
|
+
- [Concepts](./concepts.md): canonical roots, generated state, rendered outputs, scopes, and asset types.
|
|
8
|
+
- [Composable Capability](./composable-capability.md): refs, snippets, instruction templates, and evolvable units.
|
|
9
|
+
- [Managed Mode](./managed-mode.md): when to let `fclt` write tool files, and how adoption works.
|
|
10
|
+
- [Project `.ai`](./project-ai.md): how repo-local capability works without leaking project review state into the repo.
|
|
11
|
+
- [Built-In Pack](./built-in-pack.md): the packaged operating-model layer for writeback and evolution.
|
|
12
|
+
- [Writeback And Evolution](./writeback-evolution.md): how real-work friction becomes reviewable capability changes.
|
|
13
|
+
- [Roadmap](./roadmap.md): current product gaps and non-goals.
|
|
14
|
+
|
|
15
|
+
## Documentation Policy
|
|
16
|
+
|
|
17
|
+
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`.
|
|
18
|
+
|
|
19
|
+
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.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Built-In Pack
|
|
2
|
+
|
|
3
|
+
`fclt` ships an operating-model pack:
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
assets/packs/facult-operating-model/
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
It provides a default feedback loop for agents that use `fclt`.
|
|
10
|
+
|
|
11
|
+
## Included Assets
|
|
12
|
+
|
|
13
|
+
Instructions:
|
|
14
|
+
|
|
15
|
+
- `WORK_UNITS.md`
|
|
16
|
+
- `CAPABILITY_COMPOSITION.md`
|
|
17
|
+
- `LEARNING_AND_WRITEBACK.md`
|
|
18
|
+
- `EVOLUTION.md`
|
|
19
|
+
- `PROJECT_CAPABILITY.md`
|
|
20
|
+
- `INTEGRATION.md`
|
|
21
|
+
|
|
22
|
+
Skills:
|
|
23
|
+
|
|
24
|
+
- `capability-evolution`
|
|
25
|
+
- `project-operating-layer-design`
|
|
26
|
+
|
|
27
|
+
Agents:
|
|
28
|
+
|
|
29
|
+
- `writeback-curator`
|
|
30
|
+
- `evolution-planner`
|
|
31
|
+
- `scope-promoter`
|
|
32
|
+
- `integration-auditor`
|
|
33
|
+
|
|
34
|
+
Global doc:
|
|
35
|
+
|
|
36
|
+
- `AGENTS.global.md`
|
|
37
|
+
|
|
38
|
+
## When It Becomes Active
|
|
39
|
+
|
|
40
|
+
The built-in pack is always available as a built-in source:
|
|
41
|
+
|
|
42
|
+
```text
|
|
43
|
+
@builtin/facult-operating-model/...
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Install a concrete copy into a canonical root without managing any tool:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
fclt templates init operating-model --global
|
|
50
|
+
fclt templates init operating-model --project
|
|
51
|
+
fclt templates init operating-model --root /path/to/.ai
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
That writes the pack into the selected `.ai` root and rebuilds its index. It does not render files into Codex, Claude, or any other tool home.
|
|
55
|
+
|
|
56
|
+
Use `project-ai` when the target is the current repo:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
cd /path/to/repo
|
|
60
|
+
fclt templates init project-ai
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Managed mode is only the rendering layer. The pack becomes live tool guidance when you manage a tool and sync:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
fclt manage codex
|
|
67
|
+
fclt sync codex
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Global managed tools receive the built-in writeback/evolution guidance by default. Project-local `.ai` roots do not render the built-in operating model into repo-local tool outputs unless project sync policy explicitly allows it. Installing the pack and rendering it into a tool are separate decisions.
|
|
71
|
+
|
|
72
|
+
Disable built-in default sync for a canonical root:
|
|
73
|
+
|
|
74
|
+
```toml
|
|
75
|
+
version = 1
|
|
76
|
+
|
|
77
|
+
[builtin]
|
|
78
|
+
sync_defaults = false
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Design Rule
|
|
82
|
+
|
|
83
|
+
The built-in pack should stay small. It should teach:
|
|
84
|
+
|
|
85
|
+
- work-unit discipline
|
|
86
|
+
- composable refs, snippets, instructions, skills, agents, MCP, and automations
|
|
87
|
+
- verification
|
|
88
|
+
- writeback
|
|
89
|
+
- evolution proposal review
|
|
90
|
+
- project/global scope decisions
|
|
91
|
+
- managed-mode ownership boundaries
|
|
92
|
+
|
|
93
|
+
It should not become a pile of preferences. Put project-specific behavior in project `.ai`; promote to global only when repeated evidence proves reuse.
|
|
@@ -0,0 +1,170 @@
|
|
|
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 is the core model:
|
|
6
|
+
|
|
7
|
+
- write domain guidance once
|
|
8
|
+
- compose it with refs and snippets
|
|
9
|
+
- render it only where a tool should receive it
|
|
10
|
+
- target writeback at the smallest unit that needs to change
|
|
11
|
+
|
|
12
|
+
## Units
|
|
13
|
+
|
|
14
|
+
Use `instructions/` for reusable markdown doctrine.
|
|
15
|
+
|
|
16
|
+
Examples:
|
|
17
|
+
|
|
18
|
+
```text
|
|
19
|
+
~/.ai/instructions/BUN.md
|
|
20
|
+
~/.ai/instructions/RUST.md
|
|
21
|
+
<repo>/.ai/instructions/TESTING.md
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Use `snippets/` for partial blocks inserted into rendered docs.
|
|
25
|
+
|
|
26
|
+
Examples:
|
|
27
|
+
|
|
28
|
+
```text
|
|
29
|
+
~/.ai/snippets/global/codex/baseline.md
|
|
30
|
+
~/.ai/snippets/global/lang/bun.md
|
|
31
|
+
<repo>/.ai/snippets/global/project/testing.md
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Use `skills/` for executable workflows, `agents/` for delegated roles, `mcp/` for tool interfaces, and `automations/` for scheduled loops.
|
|
35
|
+
|
|
36
|
+
## Refs
|
|
37
|
+
|
|
38
|
+
Canonical refs let a markdown asset point at another asset without hard-coding machine paths:
|
|
39
|
+
|
|
40
|
+
```text
|
|
41
|
+
@ai/instructions/BUN.md
|
|
42
|
+
@project/instructions/TESTING.md
|
|
43
|
+
@builtin/facult-operating-model/instructions/WORK_UNITS.md
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Use global refs for reusable user-owned capability. Use project refs for repo-owned capability. Use built-in refs for packaged defaults.
|
|
47
|
+
|
|
48
|
+
Config-backed refs are useful when the concrete path should be named in `config.toml`:
|
|
49
|
+
|
|
50
|
+
```toml
|
|
51
|
+
version = 1
|
|
52
|
+
|
|
53
|
+
[refs]
|
|
54
|
+
language_defaults = "@ai/instructions/BUN.md"
|
|
55
|
+
project_testing = "@project/instructions/TESTING.md"
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Rendered markdown can use those refs through the render context when a tool adapter supports that target.
|
|
59
|
+
|
|
60
|
+
## Snippets
|
|
61
|
+
|
|
62
|
+
Snippets use paired HTML markers:
|
|
63
|
+
|
|
64
|
+
```md
|
|
65
|
+
<!-- fclty:global/lang/bun -->
|
|
66
|
+
<!-- /fclty:global/lang/bun -->
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
The marker above resolves to:
|
|
70
|
+
|
|
71
|
+
```text
|
|
72
|
+
snippets/global/lang/bun.md
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Create and inspect snippets with:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
fclt templates init snippet global/lang/bun
|
|
79
|
+
fclt snippets list
|
|
80
|
+
fclt snippets show global/lang/bun
|
|
81
|
+
fclt snippets sync --dry-run AGENTS.global.md
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
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.
|
|
85
|
+
|
|
86
|
+
## Instruction Templates
|
|
87
|
+
|
|
88
|
+
Create a new instruction scaffold with:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
fclt templates init instruction BUN
|
|
92
|
+
fclt templates init instruction lang/RUST
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
That writes:
|
|
96
|
+
|
|
97
|
+
```text
|
|
98
|
+
instructions/BUN.md
|
|
99
|
+
instructions/lang/RUST.md
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
An instruction can include refs, snippet markers, examples, and writeback targeting guidance. Keep one instruction focused on one reusable domain. For example:
|
|
103
|
+
|
|
104
|
+
- `BUN.md`: JavaScript runtime/package/test preferences.
|
|
105
|
+
- `RUST.md`: Rust formatting, linting, and test preferences.
|
|
106
|
+
- `WRITING.md`: voice and editorial rules.
|
|
107
|
+
- `VERIFICATION.md`: proof standards.
|
|
108
|
+
|
|
109
|
+
## Composition Pattern
|
|
110
|
+
|
|
111
|
+
A global `AGENTS.global.md` can stay short and compose units:
|
|
112
|
+
|
|
113
|
+
```md
|
|
114
|
+
# Global Agent Instructions
|
|
115
|
+
|
|
116
|
+
For work-unit framing, read `@ai/instructions/WORK_UNITS.md`.
|
|
117
|
+
For JS/Bun projects, read `@ai/instructions/BUN.md`.
|
|
118
|
+
For Rust projects, read `@ai/instructions/RUST.md`.
|
|
119
|
+
|
|
120
|
+
<!-- fclty:global/codex/baseline -->
|
|
121
|
+
<!-- /fclty:global/codex/baseline -->
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
A project can add narrower guidance:
|
|
125
|
+
|
|
126
|
+
```md
|
|
127
|
+
# Project Agent Instructions
|
|
128
|
+
|
|
129
|
+
For project test policy, read `@project/instructions/TESTING.md`.
|
|
130
|
+
For local deployment rules, read `@project/instructions/DEPLOYMENT.md`.
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
This keeps global defaults reusable and lets projects override or extend them without rewriting the whole global file.
|
|
134
|
+
|
|
135
|
+
## Evolution
|
|
136
|
+
|
|
137
|
+
Target the smallest unit that actually needs to change:
|
|
138
|
+
|
|
139
|
+
- bad or stale domain guidance: update the instruction
|
|
140
|
+
- repeated block copied in several docs: extract a snippet
|
|
141
|
+
- missing workflow: add or update a skill
|
|
142
|
+
- unclear delegation behavior: update an agent
|
|
143
|
+
- tool integration gap: update MCP/tool config or create a tooling task
|
|
144
|
+
- project-local pattern that proved reusable: promote the asset
|
|
145
|
+
|
|
146
|
+
Examples:
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
fclt ai writeback add --kind missing_context --summary "Bun guidance did not cover test runner selection." --asset instruction:BUN
|
|
150
|
+
fclt ai writeback add --kind reusable_pattern --summary "Project testing policy should become a shared verification snippet." --asset @project/instructions/TESTING.md
|
|
151
|
+
fclt ai evolve propose
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
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.
|
|
155
|
+
|
|
156
|
+
## Review
|
|
157
|
+
|
|
158
|
+
Use these surfaces:
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
fclt list instructions --global
|
|
162
|
+
fclt list snippets --global
|
|
163
|
+
fclt show instruction:BUN
|
|
164
|
+
fclt graph deps AGENTS.global.md
|
|
165
|
+
fclt graph dependents @ai/instructions/BUN.md
|
|
166
|
+
fclt ai writeback group --by asset
|
|
167
|
+
fclt ai evolve list
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
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.
|