facult 2.13.9 → 2.15.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 +26 -8
- package/assets/packs/facult-operating-model/agents/evolution-planner/agent.toml +3 -0
- package/assets/packs/facult-operating-model/agents/integration-auditor/agent.toml +8 -1
- package/assets/packs/facult-operating-model/agents/scope-promoter/agent.toml +8 -1
- package/assets/packs/facult-operating-model/agents/writeback-curator/agent.toml +2 -0
- package/assets/packs/facult-operating-model/instructions/INTEGRATION.md +44 -0
- package/assets/packs/facult-operating-model/instructions/PROJECT_CAPABILITY.md +35 -0
- package/assets/packs/facult-operating-model/instructions/WORK_UNITS.md +48 -0
- package/assets/packs/facult-operating-model/skills/capability-evolution/SKILL.md +25 -6
- package/assets/packs/facult-operating-model/skills/project-operating-layer-design/SKILL.md +33 -0
- package/assets/packs/facult-operating-model/snippets/global/core/feedback-loops.md +1 -0
- package/assets/packs/facult-operating-model/snippets/global/core/work-units.md +2 -1
- package/assets/packs/facult-operating-model/{AGENTS.global.md → snippets/templates/agents-global.md} +6 -0
- package/docs/README.md +4 -0
- package/docs/assets/fclt-capability-loop.png +0 -0
- package/docs/built-in-pack.md +23 -2
- package/docs/codex-plugin.md +57 -0
- package/docs/concepts.md +4 -1
- package/docs/pack-upgrades.md +73 -0
- package/docs/reference.md +2 -2
- package/docs/roadmap.md +4 -3
- package/docs/work-units.md +96 -0
- package/package.json +5 -1
- package/plugins/fclt/.codex-plugin/plugin.json +31 -0
- package/plugins/fclt/.mcp.json +11 -0
- package/plugins/fclt/scripts/fclt-mcp.js +320 -0
- package/plugins/fclt/skills/fclt-capability-review/SKILL.md +51 -0
- package/plugins/fclt/skills/fclt-evolution/SKILL.md +65 -0
- package/plugins/fclt/skills/fclt-setup/SKILL.md +65 -0
- package/plugins/fclt/skills/fclt-writeback/SKILL.md +57 -0
- package/src/agents.ts +1 -0
- package/src/builtin-assets.ts +1 -1
- package/src/builtin.ts +22 -0
- package/src/doctor.ts +6 -2
- package/src/global-docs.ts +6 -2
- package/src/remote.ts +252 -10
package/README.md
CHANGED
|
@@ -15,10 +15,6 @@
|
|
|
15
15
|
</a>
|
|
16
16
|
</div>
|
|
17
17
|
|
|
18
|
-
<p align="center">
|
|
19
|
-
<img alt="fclt demo" src="./Ghostty.gif">
|
|
20
|
-
</p>
|
|
21
|
-
|
|
22
18
|
`fclt` is a CLI for managing AI capability across tools and projects.
|
|
23
19
|
|
|
24
20
|
It gives instructions, snippets, skills, agents, MCP definitions, automations, and tool config a shared home. It can inspect what already exists, consolidate duplicates, render selected capability into tools like Codex and Claude, and preserve real-work friction as writeback that can later become reviewed improvements.
|
|
@@ -31,6 +27,8 @@ Use it when AI setup has become scattered across dotfiles, tool homes, repos, pr
|
|
|
31
27
|
|
|
32
28
|
Most usage should be agent-led after setup. Humans install, inspect, audit, and approve broad changes. Agents use `fclt` to find the right capability, preserve friction as writeback, and turn repeated signal into reviewed improvements.
|
|
33
29
|
|
|
30
|
+
The basic operating unit is the work unit: a piece of agent work with a goal, context, constraints, evidence, an output artifact, verification, and a writeback target when the work teaches something reusable. That frame applies to normal coding, research, docs, setup, operations, and debugging work, not only to skill updates.
|
|
31
|
+
|
|
34
32
|
## What it does
|
|
35
33
|
|
|
36
34
|
`fclt` helps you:
|
|
@@ -39,6 +37,7 @@ Most usage should be agent-led after setup. Humans install, inspect, audit, and
|
|
|
39
37
|
- keep repo-specific capability in `<repo>/.ai`
|
|
40
38
|
- inspect skills, instructions, MCP servers, agents, automations, and rendered outputs
|
|
41
39
|
- compose guidance from smaller units with refs and snippets
|
|
40
|
+
- give agents a reusable work-unit frame for normal work
|
|
42
41
|
- optionally render approved capability into Codex, Claude, Cursor, and similar tools
|
|
43
42
|
- record writebacks when an agent finds missing context, weak verification, stale guidance, or tool friction
|
|
44
43
|
- turn repeated writeback into reviewable evolution proposals
|
|
@@ -140,6 +139,15 @@ fclt templates init operating-model --global
|
|
|
140
139
|
fclt index --global
|
|
141
140
|
```
|
|
142
141
|
|
|
142
|
+
On first install, `fclt` seeds `AGENTS.global.md` from existing global agent docs such as `~/.codex/AGENTS.md` or `~/.claude/CLAUDE.md` when they exist, then appends the Facult operating-model frame. The packaged template is only the fallback.
|
|
143
|
+
|
|
144
|
+
Refresh an existing operating-model pack without overwriting local edits:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
fclt templates init operating-model --global --update --dry-run
|
|
148
|
+
fclt templates init operating-model --global --update
|
|
149
|
+
```
|
|
150
|
+
|
|
143
151
|
Create a repo-local `.ai` root:
|
|
144
152
|
|
|
145
153
|
```bash
|
|
@@ -209,7 +217,7 @@ Canonical capability can include:
|
|
|
209
217
|
- `mcp/`: MCP server definitions and overlays
|
|
210
218
|
- `automations/`: scheduled review loops
|
|
211
219
|
- `tools/<tool>/`: tool config and rules
|
|
212
|
-
- `
|
|
220
|
+
- `snippets/templates/agents-global.md`: source template materialized as `AGENTS.global.md`
|
|
213
221
|
|
|
214
222
|
Refs let markdown point at canonical assets without hard-coding paths:
|
|
215
223
|
|
|
@@ -228,6 +236,8 @@ Snippet markers let repeated blocks stay independently editable:
|
|
|
228
236
|
|
|
229
237
|
The rule is simple: target the smallest unit that needs to change. Use instructions for doctrine, snippets for repeated blocks, skills for workflows, agents for roles, MCP/tool config for interfaces, and automations for scheduled loops.
|
|
230
238
|
|
|
239
|
+
Work units give those assets a practical operating frame. They keep intent, evidence, verification, output, and learning attached to a task so repeated friction can become writeback and evolution instead of disappearing into chat history.
|
|
240
|
+
|
|
231
241
|
## Writeback and evolution
|
|
232
242
|
|
|
233
243
|
Writeback is preserved signal from real work. Evolution turns repeated signal into reviewed changes.
|
|
@@ -278,6 +288,7 @@ Install it without managing any tool:
|
|
|
278
288
|
fclt templates init operating-model --global
|
|
279
289
|
fclt templates init operating-model --project
|
|
280
290
|
fclt templates init operating-model --root /path/to/.ai
|
|
291
|
+
fclt templates init operating-model --global --update
|
|
281
292
|
```
|
|
282
293
|
|
|
283
294
|
The pack is also available as built-in refs under:
|
|
@@ -352,8 +363,8 @@ Canonical store:
|
|
|
352
363
|
|
|
353
364
|
```bash
|
|
354
365
|
fclt templates list
|
|
355
|
-
fclt templates init operating-model [--global|--project|--root PATH]
|
|
356
|
-
fclt templates init project-ai
|
|
366
|
+
fclt templates init operating-model [--global|--project|--root PATH] [--update]
|
|
367
|
+
fclt templates init project-ai [--update]
|
|
357
368
|
fclt templates init instruction <name>
|
|
358
369
|
fclt templates init snippet <marker>
|
|
359
370
|
fclt templates init skill <name>
|
|
@@ -400,9 +411,12 @@ Use `fclt --help` and `fclt <command> --help` for exact flags.
|
|
|
400
411
|
Start with:
|
|
401
412
|
|
|
402
413
|
- [Concepts](./docs/concepts.md): roots, scopes, state layers, and asset types
|
|
414
|
+
- [Work Units](./docs/work-units.md): general-purpose agent work framing
|
|
403
415
|
- [Composable Capability](./docs/composable-capability.md): refs, snippets, instruction templates, and evolvable units
|
|
404
416
|
- [Project `.ai`](./docs/project-ai.md): repo-owned capability and project sync policy
|
|
405
417
|
- [Built-in pack](./docs/built-in-pack.md): packaged work-unit, writeback, and evolution defaults
|
|
418
|
+
- [Built-in pack upgrades](./docs/pack-upgrades.md): non-destructive refresh behavior for existing `.ai` roots
|
|
419
|
+
- [Codex plugin](./docs/codex-plugin.md): installable Codex skills and MCP tools for fclt workflows
|
|
406
420
|
- [Writeback and evolution](./docs/writeback-evolution.md): the feedback-loop workflow and review surfaces
|
|
407
421
|
- [Managed mode](./docs/managed-mode.md): when to let `fclt` write tool files
|
|
408
422
|
- [Roadmap](./docs/roadmap.md): current gaps and planned work
|
|
@@ -411,7 +425,7 @@ Start with:
|
|
|
411
425
|
|
|
412
426
|
### Does fclt run an MCP server?
|
|
413
427
|
|
|
414
|
-
|
|
428
|
+
The core product is still CLI-first. The first-party Codex plugin includes a small stdio MCP wrapper that delegates to the installed `fclt` binary for status, doctor, paths, setup, writeback, and evolution workflows. See [Codex plugin](./docs/codex-plugin.md).
|
|
415
429
|
|
|
416
430
|
### Does fclt have to manage Codex or Claude files?
|
|
417
431
|
|
|
@@ -428,3 +442,7 @@ Commit canonical project assets that belong to the repo: instructions, snippets,
|
|
|
428
442
|
## Contributing
|
|
429
443
|
|
|
430
444
|
Contributor and release workflow details live in [CONTRIBUTING.md](./CONTRIBUTING.md).
|
|
445
|
+
|
|
446
|
+
## Background
|
|
447
|
+
|
|
448
|
+
The operating model behind `fclt` is related to the argument in [Governing the Machine](https://www.hack.dance/writing/governing-the-machine): as machine execution gets cheaper, the hard problem becomes governing work, evidence, memory, integration, and improvement.
|
|
@@ -26,7 +26,10 @@ Return concise proposals ordered by expected leverage, including:
|
|
|
26
26
|
- target asset
|
|
27
27
|
- target scope
|
|
28
28
|
- why this is the smallest durable change
|
|
29
|
+
- source writeback ids or evidence summary
|
|
30
|
+
- approval risk and verification path
|
|
29
31
|
|
|
30
32
|
Do not escalate to evolution when a single writeback is enough.
|
|
31
33
|
Do not use evolution as a substitute for executable task tracking when the main need is owner, priority, state, or implementation follow-through.
|
|
34
|
+
Do not globalize private, repo-specific, or speculative guidance.
|
|
32
35
|
"""
|
|
@@ -9,6 +9,13 @@ Prioritize:
|
|
|
9
9
|
- rollout hazards
|
|
10
10
|
- operational constraints
|
|
11
11
|
- gaps between local verification and real system behavior
|
|
12
|
+
- packaged, installed, rendered, or synced paths that differ from source behavior
|
|
13
|
+
- parallel execution and state-location risks
|
|
14
|
+
- privacy boundaries between global, project, generated, and machine-local state
|
|
12
15
|
|
|
13
|
-
Return concise findings ordered by impact.
|
|
16
|
+
Return concise findings ordered by impact. For each finding include:
|
|
17
|
+
- boundary at risk
|
|
18
|
+
- why the current evidence is or is not enough
|
|
19
|
+
- strongest next verification step
|
|
20
|
+
- whether the fix belongs in code, docs, a task, or capability evolution
|
|
14
21
|
"""
|
|
@@ -8,11 +8,18 @@ Prioritize:
|
|
|
8
8
|
- project specificity
|
|
9
9
|
- cross-project reuse potential
|
|
10
10
|
- pollution risk from globalizing too early
|
|
11
|
+
- private or repo-specific details that must not move into global capability
|
|
12
|
+
- whether a smaller snippet, instruction, skill, or agent should be promoted instead of a broad doc
|
|
11
13
|
|
|
12
14
|
When recommending promotion, make the standard path explicit:
|
|
13
15
|
- keep the source capability in project scope until promotion is approved
|
|
14
16
|
- create a reviewable global proposal
|
|
15
17
|
- do not treat promotion as implicit apply
|
|
16
18
|
|
|
17
|
-
Return concise decisions with
|
|
19
|
+
Return concise decisions with:
|
|
20
|
+
- recommended scope
|
|
21
|
+
- target asset or smallest unit
|
|
22
|
+
- evidence for reuse
|
|
23
|
+
- privacy/pollution risk
|
|
24
|
+
- promotion path or no-op rationale
|
|
18
25
|
"""
|
|
@@ -16,9 +16,11 @@ For each recommendation, prefer returning:
|
|
|
16
16
|
- best target asset or destination
|
|
17
17
|
- best scope (`project` or `global`)
|
|
18
18
|
- the evidence that justifies recording it
|
|
19
|
+
- whether the signal is enough for writeback only, task tracking, or evolution
|
|
19
20
|
|
|
20
21
|
Do not emit low-signal noise.
|
|
21
22
|
If the learning is repo-specific, keep it project-scoped by default.
|
|
22
23
|
When the signal is already strong and the target is clear, prefer recommending direct writeback capture rather than abstract advice.
|
|
23
24
|
When the issue is executable tooling work, recommend task tracking for the fix and writeback only for the reusable operating-model learning.
|
|
25
|
+
When the issue contains private project details, preserve the general learning without copying private details into a global asset.
|
|
24
26
|
"""
|
|
@@ -6,3 +6,47 @@ tags: [facult, integration, verification]
|
|
|
6
6
|
# Integration
|
|
7
7
|
|
|
8
8
|
Distinguish local correctness from system correctness. Check hidden dependencies, rollout order, and operational constraints before calling work done.
|
|
9
|
+
|
|
10
|
+
## When To Use
|
|
11
|
+
|
|
12
|
+
Use this when a local green signal may still fail at a boundary:
|
|
13
|
+
|
|
14
|
+
- code passes focused tests but has not been checked against the real workflow
|
|
15
|
+
- docs are correct in isolation but may send agents to a stale command or path
|
|
16
|
+
- a tool command works locally but may fail under packaged, sandboxed, or parallel execution
|
|
17
|
+
- a capability change renders into one agent tool but not another
|
|
18
|
+
- a project-local improvement may collide with global defaults or managed output
|
|
19
|
+
- a migration, release, or rollout has ordering constraints
|
|
20
|
+
|
|
21
|
+
## Integration Questions
|
|
22
|
+
|
|
23
|
+
Ask the smallest set that matches the risk:
|
|
24
|
+
|
|
25
|
+
- What consumes this output?
|
|
26
|
+
- What state does this depend on?
|
|
27
|
+
- What happens if two agents or commands run this at the same time?
|
|
28
|
+
- Does the packaged/released path behave like the source checkout?
|
|
29
|
+
- Does the project-scoped path avoid leaking into global or public surfaces?
|
|
30
|
+
- Does the global path avoid overwriting tool-native or user-edited state?
|
|
31
|
+
- Is rollback or recovery clear if the integration fails?
|
|
32
|
+
|
|
33
|
+
## Evidence
|
|
34
|
+
|
|
35
|
+
Prefer evidence that crosses the boundary that could fail:
|
|
36
|
+
|
|
37
|
+
- run the installed CLI, packaged binary, or generated artifact when source tests are not enough
|
|
38
|
+
- inspect rendered output when changing snippets, refs, or agent docs
|
|
39
|
+
- use temp roots and clean homes for setup, upgrade, and sync behavior
|
|
40
|
+
- verify review artifacts land in global `~/.ai/writebacks` or `~/.ai/evolution`, not repo-local private state
|
|
41
|
+
- check release, package, or plugin surfaces when the change affects users outside the repo
|
|
42
|
+
|
|
43
|
+
## Output
|
|
44
|
+
|
|
45
|
+
Return concise findings ordered by risk:
|
|
46
|
+
|
|
47
|
+
- boundary checked
|
|
48
|
+
- evidence used
|
|
49
|
+
- remaining assumption
|
|
50
|
+
- fix or follow-up if local correctness does not prove system correctness
|
|
51
|
+
|
|
52
|
+
Record writeback when the same integration boundary repeatedly fails, the verification loop is too weak, or a missing skill/tool would make the boundary easier to check next time.
|
|
@@ -15,6 +15,28 @@ Default to `<repo>/.ai` when the capability is about:
|
|
|
15
15
|
- repo-specific testing or verification
|
|
16
16
|
- team conventions
|
|
17
17
|
- project tools and workflows
|
|
18
|
+
- product, customer, deployment, or operational context tied to one repo
|
|
19
|
+
- examples that would leak private or irrelevant detail if copied globally
|
|
20
|
+
|
|
21
|
+
Project capability should travel with the repo when it is safe to commit. Generated state, machine-local runtime state, secrets, and review queues should not travel with it.
|
|
22
|
+
|
|
23
|
+
## Global Scope
|
|
24
|
+
|
|
25
|
+
Use `~/.ai` when the capability should follow the user across projects:
|
|
26
|
+
|
|
27
|
+
- general verification standards
|
|
28
|
+
- reusable work-unit, feedback-loop, or writeback doctrine
|
|
29
|
+
- user-owned language/tool preferences that are safe to share across repos
|
|
30
|
+
- cross-project skills or agents
|
|
31
|
+
- MCP/tool integration patterns that are not tied to one repo
|
|
32
|
+
|
|
33
|
+
Global capability should be broadly useful and low-noise. A global rule that only helps one project is usually a project rule.
|
|
34
|
+
|
|
35
|
+
## Review Artifacts
|
|
36
|
+
|
|
37
|
+
Project-scoped writebacks and evolution proposals use the project as evidence, but their Markdown review artifacts are mirrored under global `~/.ai/writebacks/projects/<slug-hash>/` and `~/.ai/evolution/projects/<slug-hash>/`.
|
|
38
|
+
|
|
39
|
+
Do not create repo-local `writebacks/` or `evolution/` review trees inside `<repo>/.ai`. Keep private review state out of the repo while preserving project metadata in the global review artifact frontmatter.
|
|
18
40
|
|
|
19
41
|
## Promote Carefully
|
|
20
42
|
|
|
@@ -23,6 +45,8 @@ Promote to `~/.ai` only when:
|
|
|
23
45
|
- the same pattern succeeds in more than one repo
|
|
24
46
|
- the capability is not coupled to local architecture
|
|
25
47
|
- the global version will not create noise for unrelated projects
|
|
48
|
+
- private examples can be removed or generalized without losing the rule
|
|
49
|
+
- the target global unit is smaller than a broad rewrite
|
|
26
50
|
|
|
27
51
|
Use:
|
|
28
52
|
|
|
@@ -31,3 +55,14 @@ fclt ai evolve promote EV-00001 --to global --project
|
|
|
31
55
|
```
|
|
32
56
|
|
|
33
57
|
That creates a new global proposal for review. It does not auto-apply the promotion.
|
|
58
|
+
|
|
59
|
+
## Decision Checklist
|
|
60
|
+
|
|
61
|
+
Choose project when the answer depends on "this repo". Choose global when the answer would still be correct after removing the repo name.
|
|
62
|
+
|
|
63
|
+
If unsure:
|
|
64
|
+
|
|
65
|
+
1. keep the asset project-scoped
|
|
66
|
+
2. record writeback with the reason it might generalize
|
|
67
|
+
3. wait for another project or repeated evidence
|
|
68
|
+
4. promote through a reviewable proposal, not by copying files by hand
|
|
@@ -9,6 +9,8 @@ A work unit is the smallest coherent unit of agent work that can be understood,
|
|
|
9
9
|
|
|
10
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
11
|
|
|
12
|
+
Use work units for ordinary work, not only for capability updates. Coding changes, research answers, documentation edits, operational triage, setup repair, design reviews, and capability evolution all benefit from the same shape when the task has real uncertainty or risk.
|
|
13
|
+
|
|
12
14
|
## Minimum Contract
|
|
13
15
|
|
|
14
16
|
A well-formed work unit names:
|
|
@@ -24,6 +26,8 @@ A well-formed work unit names:
|
|
|
24
26
|
|
|
25
27
|
If one of these is missing and the gap blocks correctness, surface the gap early and recover it before moving faster.
|
|
26
28
|
|
|
29
|
+
For low-risk one-step work, keep the contract implicit. For ambiguous, high-impact, cross-tool, stateful, or multi-step work, make the contract explicit before executing.
|
|
30
|
+
|
|
27
31
|
## Why It Exists
|
|
28
32
|
|
|
29
33
|
Work-unit framing prevents shallow completion. It helps agents avoid:
|
|
@@ -34,6 +38,9 @@ Work-unit framing prevents shallow completion. It helps agents avoid:
|
|
|
34
38
|
- creating duplicate tasks or proposals
|
|
35
39
|
- turning one-off preferences into global rules
|
|
36
40
|
- pushing project-specific details into global capability
|
|
41
|
+
- producing output faster than the system can review, integrate, or learn from it
|
|
42
|
+
|
|
43
|
+
The point is not paperwork. The point is to attach machine work to intent, context, evidence, and memory so that useful learning can change future work instead of disappearing into chat history.
|
|
37
44
|
|
|
38
45
|
## How To Use It
|
|
39
46
|
|
|
@@ -54,6 +61,47 @@ Writeback:
|
|
|
54
61
|
|
|
55
62
|
Use the smallest framing that makes the task correct. Do not turn every request into paperwork.
|
|
56
63
|
|
|
64
|
+
## Examples
|
|
65
|
+
|
|
66
|
+
Coding:
|
|
67
|
+
|
|
68
|
+
```text
|
|
69
|
+
Goal: fix the failing login test
|
|
70
|
+
Acceptance: test passes and no auth regression is introduced
|
|
71
|
+
Context: failing test output, auth middleware, recent commits
|
|
72
|
+
Constraints: preserve public API
|
|
73
|
+
Evidence: focused test, relevant integration test
|
|
74
|
+
Artifact: code diff and concise summary
|
|
75
|
+
Verification: command output and changed behavior
|
|
76
|
+
Writeback: only if the failure exposes stale test or auth guidance
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Research:
|
|
80
|
+
|
|
81
|
+
```text
|
|
82
|
+
Goal: answer a source-backed product question
|
|
83
|
+
Acceptance: answer cites current primary sources
|
|
84
|
+
Context: user question, relevant docs, dates
|
|
85
|
+
Constraints: distinguish verified facts from inference
|
|
86
|
+
Evidence: source links and quotes within fair-use limits
|
|
87
|
+
Artifact: answer or research note
|
|
88
|
+
Verification: source freshness and consistency check
|
|
89
|
+
Writeback: durable note if the finding will recur
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Capability evolution:
|
|
93
|
+
|
|
94
|
+
```text
|
|
95
|
+
Goal: decide whether repeated writebacks justify a proposal
|
|
96
|
+
Acceptance: proposal exists only if evidence repeats or a capability is clearly missing
|
|
97
|
+
Context: grouped writebacks, target asset, current canonical guidance
|
|
98
|
+
Constraints: avoid global noise and private leakage
|
|
99
|
+
Evidence: writeback IDs and affected work units
|
|
100
|
+
Artifact: accepted proposal, rejected proposal, or no-op note
|
|
101
|
+
Verification: proposal kind, scope, target, and review artifact
|
|
102
|
+
Writeback: only for new meta-learning about the evolution process
|
|
103
|
+
```
|
|
104
|
+
|
|
57
105
|
## Writeback
|
|
58
106
|
|
|
59
107
|
When the work reveals durable friction, missing capability, stale guidance, or a repeatable workflow, prefer one strong writeback over many weak ones.
|
|
@@ -12,6 +12,8 @@ Do not wait for a human operator by default if the signal is already clear and t
|
|
|
12
12
|
|
|
13
13
|
Use writeback first when the signal is useful but not yet repeated. Use evolution when accumulated writebacks, repeated tool friction, or a clearly missing capability point at a specific target asset or new capability.
|
|
14
14
|
|
|
15
|
+
The goal is a governed feedback loop: work creates evidence, evidence produces writeback, repeated writeback becomes a small reviewed proposal, and accepted proposals change future agent behavior.
|
|
16
|
+
|
|
15
17
|
## Scope Decision
|
|
16
18
|
|
|
17
19
|
Choose `project` when the behavior depends on repo-local architecture or workflow.
|
|
@@ -20,14 +22,17 @@ Choose `global` when the behavior is broadly reusable.
|
|
|
20
22
|
|
|
21
23
|
If unsure, start at project scope and promote later with evidence.
|
|
22
24
|
|
|
25
|
+
Reject global scope when the proposal depends on private examples, one repo's architecture, a single user's temporary preference, or a workflow that has not repeated.
|
|
26
|
+
|
|
23
27
|
## Working Flow
|
|
24
28
|
|
|
25
|
-
1.
|
|
26
|
-
2.
|
|
27
|
-
3.
|
|
28
|
-
4.
|
|
29
|
-
5.
|
|
30
|
-
6.
|
|
29
|
+
1. Read current writebacks and existing proposals.
|
|
30
|
+
2. Group or summarize repeated signal by asset, kind, and scope.
|
|
31
|
+
3. Check the current target asset before proposing a change.
|
|
32
|
+
4. Choose the smallest valid proposal kind.
|
|
33
|
+
5. Draft the proposal with evidence and intended target.
|
|
34
|
+
6. Accept only after the target and scope are correct.
|
|
35
|
+
7. Apply only when the markdown target is the intended canonical asset.
|
|
31
36
|
|
|
32
37
|
Use:
|
|
33
38
|
|
|
@@ -52,6 +57,8 @@ fclt templates init automation tool-call-audit
|
|
|
52
57
|
|
|
53
58
|
If there is not yet enough repeated signal for evolution, record the writeback and stop there.
|
|
54
59
|
|
|
60
|
+
Do not create a proposal only to preserve an idea. Preserve the idea as writeback, notes, or task tracking unless it has enough evidence to change capability.
|
|
61
|
+
|
|
55
62
|
## Proposal Kind Selection
|
|
56
63
|
|
|
57
64
|
- `update_asset` for tightening existing guidance
|
|
@@ -62,9 +69,21 @@ If there is not yet enough repeated signal for evolution, record the writeback a
|
|
|
62
69
|
|
|
63
70
|
Use task tracking instead of evolution when the main work is an executable tool or product fix that needs an owner, priority, state, or delivery plan. Use evolution for the reusable instruction, skill, or operating-model change that should survive that fix.
|
|
64
71
|
|
|
72
|
+
## Review Criteria
|
|
73
|
+
|
|
74
|
+
Before accept/apply, verify:
|
|
75
|
+
|
|
76
|
+
- evidence is repeated or the missing capability is obvious
|
|
77
|
+
- the proposal targets the smallest affected unit
|
|
78
|
+
- project/global scope is correct
|
|
79
|
+
- private or project-specific examples are not leaking into global assets
|
|
80
|
+
- the patch changes canonical markdown assets, not generated runtime state
|
|
81
|
+
- the resulting behavior can be verified by reading, rendering, indexing, or running the relevant command
|
|
82
|
+
|
|
65
83
|
## Output Contract
|
|
66
84
|
- repeated signal
|
|
67
85
|
- proposed asset change
|
|
68
86
|
- target scope
|
|
69
87
|
- evidence
|
|
70
88
|
- smallest useful next step
|
|
89
|
+
- approval or no-op rationale
|
|
@@ -8,8 +8,41 @@ tags: [facult, project, design]
|
|
|
8
8
|
## When To Use
|
|
9
9
|
Use this skill when a project needs its own `.ai/` structure, repo-specific instructions, or local bootstrap guidance.
|
|
10
10
|
|
|
11
|
+
Use it when:
|
|
12
|
+
|
|
13
|
+
- a repo has recurring agent friction that should not become global doctrine
|
|
14
|
+
- setup or verification steps are repeatedly rediscovered
|
|
15
|
+
- project skills, agents, MCP definitions, or snippets need a stable source of truth
|
|
16
|
+
- a repo needs policy for what may be rendered into tool homes
|
|
17
|
+
- a project should contribute writeback/evolution evidence without committing private review artifacts
|
|
18
|
+
|
|
19
|
+
Do not use it to copy a user's private global preferences into a public repo.
|
|
20
|
+
|
|
21
|
+
## Design Rules
|
|
22
|
+
|
|
23
|
+
- Start from the repo's real workflows, commands, and risk boundaries.
|
|
24
|
+
- Keep project-specific guidance in `<repo>/.ai`.
|
|
25
|
+
- Keep generated state, queues, review artifacts, and local machine config out of the repo.
|
|
26
|
+
- Prefer a few high-leverage instructions or skills over a large generic dump.
|
|
27
|
+
- Use snippets only for blocks that are reused or independently evolvable.
|
|
28
|
+
- Make verification and integration paths explicit enough for future agents to run.
|
|
29
|
+
- Add sync policy only for assets that should render into repo-local tool outputs.
|
|
30
|
+
|
|
31
|
+
## Working Flow
|
|
32
|
+
|
|
33
|
+
1. Inventory existing repo guidance and tool files.
|
|
34
|
+
2. Identify repeated friction from recent work, issues, reviews, or writebacks.
|
|
35
|
+
3. Separate project-specific behavior from global/user-owned behavior.
|
|
36
|
+
4. Propose a minimal `.ai` layout.
|
|
37
|
+
5. Add or update the smallest useful assets.
|
|
38
|
+
6. Verify the graph/index and any rendered output.
|
|
39
|
+
7. Record writeback for reusable learnings that should evolve later.
|
|
40
|
+
|
|
11
41
|
## Output Contract
|
|
12
42
|
- recommended `.ai/` layout
|
|
13
43
|
- what stays project-local
|
|
14
44
|
- what stays global
|
|
15
45
|
- what should remain generated runtime output only
|
|
46
|
+
- sync/rendering policy
|
|
47
|
+
- verification path
|
|
48
|
+
- privacy or commit-safety risks
|
|
@@ -6,5 +6,6 @@
|
|
|
6
6
|
- Treat verification, evaluation, and writeback as part of the work, not cleanup after it.
|
|
7
7
|
- For work-unit clarification, read ${refs.work_units}.
|
|
8
8
|
- For verification guidance, read ${refs.verification}.
|
|
9
|
+
- For integration risk, read ${refs.integration}.
|
|
9
10
|
- For learning and writeback, read ${refs.learning_writeback}.
|
|
10
11
|
- For deeper guidance, read ${refs.feedback_loops}.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
- Treat every task as a work unit, not just a request.
|
|
2
|
-
- A work unit should have a goal, acceptance criteria, required context, constraints, signals or evidence, an output artifact, and a
|
|
2
|
+
- A work unit should have a goal, acceptance criteria, required context, constraints, signals or evidence, an output artifact, a verification path, and a writeback target when the work teaches something reusable.
|
|
3
3
|
- If any of those are missing and the gap blocks correctness, surface it early and try to recover it.
|
|
4
4
|
- Prefer making the work unit more explicit before increasing execution speed.
|
|
5
5
|
- If the task is vague, ambiguous, or overloaded, narrow it before acting.
|
|
6
|
+
- Treat work-unit framing as generally applicable to coding, research, writing, operations, setup, debugging, and capability evolution.
|
|
6
7
|
- For deeper guidance, read ${refs.work_units}.
|
package/assets/packs/facult-operating-model/{AGENTS.global.md → snippets/templates/agents-global.md}
RENAMED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Global Agent Instructions
|
|
2
2
|
|
|
3
|
+
This template materializes as `AGENTS.global.md` when the operating-model pack is
|
|
4
|
+
installed. It should stay small and composed from snippets. Put detailed
|
|
5
|
+
doctrine in instructions, workflow execution in skills, and local/private
|
|
6
|
+
preferences in user-owned or project-owned assets outside the public pack.
|
|
7
|
+
|
|
3
8
|
## Working mode
|
|
4
9
|
|
|
5
10
|
<!-- fclty:global/baseline -->
|
|
@@ -22,6 +27,7 @@
|
|
|
22
27
|
- For work-unit definition and scope clarification, read ${refs.work_units}.
|
|
23
28
|
- For identifying, improving, and validating feedback loops, read ${refs.feedback_loops}.
|
|
24
29
|
- For verification and anti-false-positive checks, read ${refs.verification}.
|
|
30
|
+
- For checking integration boundaries, read ${refs.integration}.
|
|
25
31
|
- For learning, decisions, and writeback, read ${refs.learning_writeback}.
|
|
26
32
|
- For capability evolution, proposal kinds, and `facult ai` workflow, read ${refs.evolution}.
|
|
27
33
|
- For deciding whether something belongs in global or project scope, read ${refs.project_capability}.
|
package/docs/README.md
CHANGED
|
@@ -9,9 +9,12 @@ The concepts guide includes the [feedback-loop diagram](./assets/fclt-capability
|
|
|
9
9
|
## Guides
|
|
10
10
|
|
|
11
11
|
- [Concepts](./concepts.md): canonical roots, generated state, rendered outputs, scopes, and asset types.
|
|
12
|
+
- [Work Units](./work-units.md): a general frame for agent work, evidence, verification, and writeback.
|
|
12
13
|
- [Composable Capability](./composable-capability.md): refs, snippets, instruction templates, and evolvable units.
|
|
13
14
|
- [Project `.ai`](./project-ai.md): how repo-local capability works without leaking project review state into the repo.
|
|
14
15
|
- [Built-in pack](./built-in-pack.md): the packaged operating-model layer for writeback and evolution.
|
|
16
|
+
- [Built-in pack upgrades](./pack-upgrades.md): non-destructive refresh behavior for existing `.ai` roots.
|
|
17
|
+
- [Codex plugin](./codex-plugin.md): installable Codex skills and MCP tools for fclt workflows.
|
|
15
18
|
- [Writeback and evolution](./writeback-evolution.md): how real-work friction becomes reviewable capability changes.
|
|
16
19
|
- [Managed mode](./managed-mode.md): when to let `fclt` write tool files, and how adoption works.
|
|
17
20
|
- [Security and trust](./security-trust.md): source trust, audit, secrets, and commit hygiene.
|
|
@@ -24,6 +27,7 @@ The concepts guide includes the [feedback-loop diagram](./assets/fclt-capability
|
|
|
24
27
|
New users should read:
|
|
25
28
|
|
|
26
29
|
- [Concepts](./concepts.md)
|
|
30
|
+
- [Work Units](./work-units.md)
|
|
27
31
|
- [Project `.ai`](./project-ai.md) if working in a repo
|
|
28
32
|
- [Managed mode](./managed-mode.md) only before allowing `fclt` to write tool files
|
|
29
33
|
- [Writeback and evolution](./writeback-evolution.md) before setting up feedback loops
|
|
Binary file
|
package/docs/built-in-pack.md
CHANGED
|
@@ -31,9 +31,19 @@ Agents:
|
|
|
31
31
|
- `scope-promoter`
|
|
32
32
|
- `integration-auditor`
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
Entry template:
|
|
35
35
|
|
|
36
|
-
- `
|
|
36
|
+
- `snippets/templates/agents-global.md`
|
|
37
|
+
|
|
38
|
+
The template materializes as `AGENTS.global.md` when installed into a canonical `.ai` root. The source lives under snippets/templates so the pack itself models composition instead of treating the root global doc as a special hand-maintained asset. The installed `AGENTS.global.md` should stay small and point to snippets and instructions rather than becoming the only place where guidance lives.
|
|
39
|
+
|
|
40
|
+
On first install, `fclt` preserves existing guidance when it can:
|
|
41
|
+
|
|
42
|
+
- global installs seed `AGENTS.global.md` from existing global agent docs such as `~/.codex/AGENTS.md` or `~/.claude/CLAUDE.md`
|
|
43
|
+
- project installs seed from the repo's existing `AGENTS.md` or `CLAUDE.md`
|
|
44
|
+
- the packaged template is only the fallback when no existing guidance is found
|
|
45
|
+
|
|
46
|
+
Seeded `AGENTS.global.md` files are treated as user-owned. They are not marked as pack-owned in the update manifest, so future `--update` runs skip them instead of replacing them with the fallback template.
|
|
37
47
|
|
|
38
48
|
## When It Becomes Active
|
|
39
49
|
|
|
@@ -53,6 +63,15 @@ fclt templates init operating-model --root /path/to/.ai
|
|
|
53
63
|
|
|
54
64
|
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
65
|
|
|
66
|
+
Refresh an existing root non-destructively:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
fclt templates init operating-model --global --update --dry-run
|
|
70
|
+
fclt templates init operating-model --global --update
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
`--update` refreshes only files that still match the last installed pack manifest and skips local edits. See [Built-in pack upgrades](./pack-upgrades.md).
|
|
74
|
+
|
|
56
75
|
Use `project-ai` when the target is the current repo:
|
|
57
76
|
|
|
58
77
|
```bash
|
|
@@ -95,5 +114,7 @@ Keep project-specific behavior in project `.ai`. Promote it only when repeated e
|
|
|
95
114
|
## Next
|
|
96
115
|
|
|
97
116
|
- Read [Composable Capability](./composable-capability.md) for refs, snippets, and instruction templates.
|
|
117
|
+
- Read [Work Units](./work-units.md) for the general work-unit model.
|
|
118
|
+
- Read [Built-in pack upgrades](./pack-upgrades.md) before refreshing an existing root.
|
|
98
119
|
- Read [Writeback and evolution](./writeback-evolution.md) for the feedback loop.
|
|
99
120
|
- Read [Managed mode](./managed-mode.md) before rendering the pack into a tool home.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Codex Plugin
|
|
2
|
+
|
|
3
|
+
`fclt` ships a first-party Codex plugin at:
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
plugins/fclt/
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
The plugin is for agent-led operation. After install, Codex gets focused skills for setup, writeback, evolution, and capability review, plus an MCP server wrapper that exposes common `fclt` CLI actions as tools.
|
|
10
|
+
|
|
11
|
+
## What It Includes
|
|
12
|
+
|
|
13
|
+
- `fclt-setup`: install, update, inspect, initialize, and repair fclt setup.
|
|
14
|
+
- `fclt-writeback`: record and review durable writebacks from real work.
|
|
15
|
+
- `fclt-evolution`: turn repeated writeback into reviewed capability proposals.
|
|
16
|
+
- `fclt-capability-review`: inspect global/project capability roots and scope changes.
|
|
17
|
+
- `fclt` MCP server: stdio wrapper around the installed `fclt` CLI.
|
|
18
|
+
|
|
19
|
+
The MCP wrapper intentionally delegates to the local `fclt` binary instead of duplicating core logic. Set `FCLT_BIN` if Codex should call a specific binary.
|
|
20
|
+
|
|
21
|
+
## MCP Tools
|
|
22
|
+
|
|
23
|
+
The plugin exposes:
|
|
24
|
+
|
|
25
|
+
- `fclt_status`
|
|
26
|
+
- `fclt_doctor`
|
|
27
|
+
- `fclt_paths`
|
|
28
|
+
- `fclt_init_operating_model`
|
|
29
|
+
- `fclt_writeback_add`
|
|
30
|
+
- `fclt_writeback_review`
|
|
31
|
+
- `fclt_evolve`
|
|
32
|
+
|
|
33
|
+
These tools are thin wrappers around CLI commands and return command output. Mutating tools still rely on the normal fclt safety model: dry-run first when available, review broad changes before apply, and preserve existing user guidance.
|
|
34
|
+
|
|
35
|
+
## Install In Codex
|
|
36
|
+
|
|
37
|
+
From this repository, the plugin can be rendered into the Codex plugin marketplace by managed sync:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
fclt manage codex --global
|
|
41
|
+
fclt sync codex --global
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
That writes plugin files under the Codex plugin location and updates the personal marketplace entry. Use managed sync only when you want `fclt` to write Codex tool files.
|
|
45
|
+
|
|
46
|
+
For local plugin development, run the lightweight checks that ship with the repository:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
node plugins/fclt/scripts/fclt-mcp.js --self-test
|
|
50
|
+
bun run check
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Recommended Agent Use
|
|
54
|
+
|
|
55
|
+
Use the plugin skills as the first interface. Use MCP tools when a Codex workflow benefits from structured calls for status, doctor, paths, writeback, or evolution review.
|
|
56
|
+
|
|
57
|
+
Do not create writeback/evolution noise. Record strong signal, group repeated signal, then propose the smallest concrete capability change.
|
package/docs/concepts.md
CHANGED
|
@@ -48,7 +48,9 @@ Use these as installable catalog sources. Review and trust source policy before
|
|
|
48
48
|
|
|
49
49
|
A work unit is a scoped agent task with a goal, acceptance criteria, required context, constraints, evidence, output artifact, verification path, and writeback target.
|
|
50
50
|
|
|
51
|
-
Agents should keep this implicit for simple work and make it explicit when the task is ambiguous, risky, or multi-step. The built-in operating-model pack includes `WORK_UNITS.md` so managed agents and canonical `.ai` roots can share the same framing.
|
|
51
|
+
This applies to ordinary coding, research, docs, operations, setup, and debugging work, not only to skill or instruction updates. Agents should keep this implicit for simple work and make it explicit when the task is ambiguous, risky, stateful, or multi-step. The built-in operating-model pack includes `WORK_UNITS.md` so managed agents and canonical `.ai` roots can share the same framing.
|
|
52
|
+
|
|
53
|
+
See [Work Units](./work-units.md) for the detailed model.
|
|
52
54
|
|
|
53
55
|
## State Layers
|
|
54
56
|
|
|
@@ -133,3 +135,4 @@ The durable loop is:
|
|
|
133
135
|
- Read [Project `.ai`](./project-ai.md) before adding repo-local capability.
|
|
134
136
|
- Read [Managed mode](./managed-mode.md) before allowing `fclt` to write tool files.
|
|
135
137
|
- Read [Composable Capability](./composable-capability.md) to split guidance into instructions, snippets, skills, agents, MCP, and automations.
|
|
138
|
+
- Read [Work Units](./work-units.md) to understand the general task frame behind writeback and evolution.
|