facult 2.12.0 → 2.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +209 -715
- package/assets/packs/facult-operating-model/instructions/CAPABILITY_COMPOSITION.md +1 -1
- package/assets/packs/facult-operating-model/instructions/EVOLUTION.md +1 -1
- package/assets/packs/facult-operating-model/instructions/LEARNING_AND_WRITEBACK.md +1 -1
- package/docs/README.md +19 -9
- package/docs/assets/fclt-capability-loop.png +0 -0
- package/docs/automations.md +68 -0
- package/docs/built-in-pack.md +10 -4
- package/docs/composable-capability.md +8 -0
- package/docs/concepts.md +11 -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
|
@@ -42,7 +42,7 @@ Use project scope for capability that belongs to a repo, team workflow, architec
|
|
|
42
42
|
|
|
43
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
44
|
|
|
45
|
-
## Writeback
|
|
45
|
+
## Writeback and Evolution
|
|
46
46
|
|
|
47
47
|
Target the smallest affected unit.
|
|
48
48
|
|
|
@@ -98,7 +98,7 @@ Review surfaces:
|
|
|
98
98
|
|
|
99
99
|
Evolution proposal metadata, markdown drafts, patch artifacts, writeback queues,
|
|
100
100
|
and journals are runtime state. `fclt` stores JSON queues, proposal records,
|
|
101
|
-
draft refs, patches, and journals in machine-local
|
|
101
|
+
draft refs, patches, and journals in machine-local `fclt` state. It mirrors
|
|
102
102
|
human-readable review artifacts into global `~/.ai/writebacks/...` and
|
|
103
103
|
`~/.ai/evolution/...`, including project-scoped artifacts under
|
|
104
104
|
`projects/<slug-hash>/` with cwd/project metadata in frontmatter. Canonical
|
|
@@ -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
|
|
package/docs/README.md
CHANGED
|
@@ -1,19 +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
|
-
- [Managed Mode](./managed-mode.md): when to let `fclt` write tool files, and how adoption works.
|
|
10
13
|
- [Project `.ai`](./project-ai.md): how repo-local capability works without leaking project review state into the repo.
|
|
11
|
-
- [Built-
|
|
12
|
-
- [Writeback
|
|
13
|
-
- [
|
|
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.
|
|
14
21
|
|
|
15
|
-
##
|
|
22
|
+
## Reading Order
|
|
16
23
|
|
|
17
|
-
|
|
24
|
+
New users should read:
|
|
18
25
|
|
|
19
|
-
|
|
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,7 +6,7 @@
|
|
|
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
|
|
|
@@ -80,7 +80,7 @@ sync_defaults = false
|
|
|
80
80
|
|
|
81
81
|
## Design Rule
|
|
82
82
|
|
|
83
|
-
The built-in pack should stay small. It
|
|
83
|
+
The built-in pack should stay small. It teaches:
|
|
84
84
|
|
|
85
85
|
- work-unit discipline
|
|
86
86
|
- composable refs, snippets, instructions, skills, agents, MCP, and automations
|
|
@@ -90,4 +90,10 @@ The built-in pack should stay small. It should teach:
|
|
|
90
90
|
- project/global scope decisions
|
|
91
91
|
- managed-mode ownership boundaries
|
|
92
92
|
|
|
93
|
-
|
|
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.
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
`fclt` treats AI behavior as small capability units that can be composed into larger agent instructions and evolved independently.
|
|
4
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
|
+
|
|
5
7
|
This is the core model:
|
|
6
8
|
|
|
7
9
|
- write domain guidance once
|
|
@@ -168,3 +170,9 @@ fclt ai evolve list
|
|
|
168
170
|
```
|
|
169
171
|
|
|
170
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
|
|
|
@@ -123,3 +127,9 @@ The durable loop is:
|
|
|
123
127
|
4. Draft the smallest valid proposal.
|
|
124
128
|
5. Review and apply accepted changes to canonical source.
|
|
125
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`:
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Command reference
|
|
2
|
+
|
|
3
|
+
This page groups the main `fclt` commands by job. Use `fclt --help` and `fclt <command> --help` for exact flags.
|
|
4
|
+
|
|
5
|
+
## Discovery
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
fclt status [--json]
|
|
9
|
+
fclt doctor [--json] [--repair]
|
|
10
|
+
fclt paths [--json]
|
|
11
|
+
fclt scan [--from <path>] [--json] [--show-duplicates]
|
|
12
|
+
fclt inventory [--json] [--tool <name>] [--show-secrets]
|
|
13
|
+
fclt list [skills|mcp|agents|snippets|instructions|automations]
|
|
14
|
+
fclt show <selector>
|
|
15
|
+
fclt find <query>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Use these first. They let you inspect tool state without claiming ownership of any files.
|
|
19
|
+
`doctor --json` is read-only and reports setup health, issues, and recommended
|
|
20
|
+
actions. `paths --json` reports canonical, generated, runtime, and review paths
|
|
21
|
+
for agents and integrations.
|
|
22
|
+
|
|
23
|
+
## Graph
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
fclt graph show <selector>
|
|
27
|
+
fclt graph deps <selector>
|
|
28
|
+
fclt graph dependents <selector>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
The graph explains how instructions, snippets, config refs, and rendered targets relate.
|
|
32
|
+
|
|
33
|
+
## Canonical Store
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
fclt templates list
|
|
37
|
+
fclt templates init operating-model [--global|--project|--root PATH]
|
|
38
|
+
fclt templates init project-ai
|
|
39
|
+
fclt templates init instruction <name>
|
|
40
|
+
fclt templates init snippet <marker>
|
|
41
|
+
fclt templates init skill <name>
|
|
42
|
+
fclt templates init agent <name>
|
|
43
|
+
fclt templates init mcp <name>
|
|
44
|
+
fclt templates init automation <template-id> --scope global|project|wide
|
|
45
|
+
fclt consolidate --auto keep-current --from <path>
|
|
46
|
+
fclt index [--force]
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Use these to create or normalize canonical capability in `~/.ai` or `<repo>/.ai`.
|
|
50
|
+
|
|
51
|
+
## Managed mode
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
fclt manage <tool> [--dry-run] [--adopt-existing]
|
|
55
|
+
fclt sync [tool] [--dry-run] [--adopt-live]
|
|
56
|
+
fclt enable <selector> --for codex,claude
|
|
57
|
+
fclt disable <selector> --for codex,claude
|
|
58
|
+
fclt managed
|
|
59
|
+
fclt unmanage <tool>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Managed mode writes rendered output into tool homes. Read [Managed mode](./managed-mode.md) before using it on an existing setup.
|
|
63
|
+
|
|
64
|
+
## Writeback and evolution
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
fclt ai writeback add --kind <kind> --summary <text> --asset <selector>
|
|
68
|
+
fclt ai writeback list
|
|
69
|
+
fclt ai writeback show WB-00001
|
|
70
|
+
fclt ai writeback group --by asset
|
|
71
|
+
fclt ai writeback summarize --by kind
|
|
72
|
+
|
|
73
|
+
fclt ai evolve propose
|
|
74
|
+
fclt ai evolve list
|
|
75
|
+
fclt ai evolve show EV-00001
|
|
76
|
+
fclt ai evolve draft EV-00001
|
|
77
|
+
fclt ai evolve review EV-00001
|
|
78
|
+
fclt ai evolve accept EV-00001
|
|
79
|
+
fclt ai evolve reject EV-00001 --reason <text>
|
|
80
|
+
fclt ai evolve apply EV-00001
|
|
81
|
+
fclt ai evolve promote EV-00003 --to global --project
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Use these to turn repeated work friction into reviewed capability changes.
|
|
85
|
+
|
|
86
|
+
## Sources, Audit, And Updates
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
fclt search <query>
|
|
90
|
+
fclt install <source:item> [--as <name>] [--strict-source-trust]
|
|
91
|
+
fclt update [--apply]
|
|
92
|
+
fclt verify-source <name> [--json]
|
|
93
|
+
fclt sources list
|
|
94
|
+
fclt sources trust <source> [--note <text>]
|
|
95
|
+
fclt sources review <source> [--note <text>]
|
|
96
|
+
fclt sources block <source> [--note <text>]
|
|
97
|
+
fclt sources clear <source>
|
|
98
|
+
fclt audit [--non-interactive]
|
|
99
|
+
fclt self-update
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Use `--strict-source-trust` when installing or updating remote capability from catalogs.
|
|
103
|
+
|
|
104
|
+
## Root Selection
|
|
105
|
+
|
|
106
|
+
Most commands accept the same root controls:
|
|
107
|
+
|
|
108
|
+
- `--global`: use `~/.ai`
|
|
109
|
+
- `--project`: use the nearest repo-local `.ai`
|
|
110
|
+
- `--root /path/to/.ai`: use an explicit canonical root
|
|
111
|
+
- `--scope merged|global|project`: choose a discovery view
|
|
112
|
+
- `--source builtin|global|project`: filter provenance in list/find/show/graph flows
|
package/docs/roadmap.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Roadmap
|
|
2
2
|
|
|
3
|
-
This
|
|
3
|
+
This roadmap tracks remaining product direction for `fclt`.
|
|
4
4
|
|
|
5
5
|
## Already Shipped
|
|
6
6
|
|
|
@@ -11,6 +11,7 @@ This replaces the older operating-model target-state notes. That file mixed curr
|
|
|
11
11
|
- Project-scoped writeback/evolution artifacts mirrored under global `~/.ai`.
|
|
12
12
|
- Built-in operating-model pack.
|
|
13
13
|
- Independent built-in operating-model pack install with `templates init operating-model`.
|
|
14
|
+
- Read-only setup discovery with `doctor --json` and `paths --json`.
|
|
14
15
|
- Cleaner built-in canonical refs.
|
|
15
16
|
- JSON-first `inventory`.
|
|
16
17
|
- `sync --adopt-live` for explicit promotion of live tool edits.
|
|
@@ -18,32 +19,42 @@ This replaces the older operating-model target-state notes. That file mixed curr
|
|
|
18
19
|
|
|
19
20
|
## Current Priorities
|
|
20
21
|
|
|
21
|
-
1.
|
|
22
|
+
1. Add agent-first setup APIs.
|
|
23
|
+
- Add `setup plan --json` and safe apply primitives for confirmation-gated setup.
|
|
24
|
+
- Add command/risk metadata so agents can distinguish read-only, dry-run, generated-state writes, mutating actions, and high-risk global changes.
|
|
25
|
+
|
|
26
|
+
2. Make status more explanatory.
|
|
22
27
|
- Show policy summaries.
|
|
23
28
|
- Surface top recommended next action.
|
|
24
29
|
- Connect sync ledger history to rendered targets.
|
|
25
30
|
|
|
26
|
-
|
|
31
|
+
3. Add a structured sync plan.
|
|
27
32
|
- Group writes, updates, removals, skips, conflicts, and repairs.
|
|
28
33
|
- Expose the same plan as JSON.
|
|
29
34
|
- Explain source refs and policy reasons.
|
|
30
35
|
|
|
31
|
-
|
|
36
|
+
4. Improve project onboarding.
|
|
32
37
|
- Add a primary `fclt init project` flow.
|
|
33
38
|
- Explain default-deny project sync during setup.
|
|
34
39
|
- Offer safe adoption, detach, and restore choices.
|
|
35
40
|
|
|
36
|
-
|
|
41
|
+
5. Make policy inspectable.
|
|
37
42
|
- Add `policy show`.
|
|
38
43
|
- Add `policy explain`.
|
|
39
44
|
- Hide TOML details behind user-facing commands where possible.
|
|
40
45
|
|
|
41
|
-
|
|
46
|
+
6. Make templates, plugins, automations, and rendered targets first-class inventory objects.
|
|
42
47
|
- List and show them consistently.
|
|
43
48
|
- Add graph visibility.
|
|
44
49
|
- Include them in status and sync plans.
|
|
45
50
|
|
|
46
|
-
|
|
51
|
+
7. Add a first-party Codex plugin and MCP surface.
|
|
52
|
+
- Expose safe read/write operations over existing `fclt` behavior.
|
|
53
|
+
- Keep the CLI and canonical `.ai` roots as the source of truth.
|
|
54
|
+
- Gate high-risk global changes behind explicit review.
|
|
55
|
+
- Bundle agent-facing skills for work units, writeback, evolution, capability search, and automation setup.
|
|
56
|
+
|
|
57
|
+
8. Tighten selector consistency.
|
|
47
58
|
- Use one selector grammar across `list`, `show`, `graph`, `enable`, `disable`, `trust`, `audit`, writeback, and evolution.
|
|
48
59
|
- Return useful ambiguity errors with candidates.
|
|
49
60
|
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Security and Trust
|
|
2
|
+
|
|
3
|
+
`fclt` can inspect and install capability that affects agent behavior. Treat that capability like code.
|
|
4
|
+
|
|
5
|
+
## Source Trust
|
|
6
|
+
|
|
7
|
+
Remote catalogs can be useful, but they should not become trusted by accident.
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
fclt sources list
|
|
11
|
+
fclt verify-source skills.sh --json
|
|
12
|
+
fclt sources trust skills.sh --note "reviewed"
|
|
13
|
+
fclt install skills.sh:code-review --as code-review-skills-sh --strict-source-trust
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Source trust has three practical states:
|
|
17
|
+
|
|
18
|
+
- `trusted`: reviewed source, eligible for strict installs and updates
|
|
19
|
+
- `review`: visible but not trusted for strict installs
|
|
20
|
+
- `blocked`: not eligible for install/update
|
|
21
|
+
|
|
22
|
+
## Item Trust
|
|
23
|
+
|
|
24
|
+
Individual skills and MCP servers can also be trusted or untrusted:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
fclt trust <skill-name>
|
|
28
|
+
fclt trust mcp:<name>
|
|
29
|
+
fclt untrust <skill-name>
|
|
30
|
+
fclt untrust mcp:<name>
|
|
31
|
+
fclt trust skills --all
|
|
32
|
+
fclt untrust mcp --all
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Use item trust when a source contains mixed-quality skills or MCP servers, or when local review happens item by item.
|
|
36
|
+
|
|
37
|
+
## Audit
|
|
38
|
+
|
|
39
|
+
Run an interactive audit:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
fclt audit
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Run static checks in automation:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
fclt audit --non-interactive --severity high
|
|
49
|
+
fclt audit --non-interactive mcp:github --severity medium --json
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Suppress or fix reviewed findings:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
fclt audit safe mcp:github --rule static:mcp-env-inline-secret --note "reviewed"
|
|
56
|
+
fclt audit fix mcp:github
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Secrets
|
|
60
|
+
|
|
61
|
+
Tracked canonical MCP config should not inline secrets. Put machine-specific values in ignored local overlays:
|
|
62
|
+
|
|
63
|
+
```text
|
|
64
|
+
~/.ai/mcp/servers.local.json
|
|
65
|
+
<repo>/.ai/mcp/servers.local.json
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
`inventory --json` redacts MCP secrets by default. Use `--show-secrets` only for local debugging.
|
|
69
|
+
|
|
70
|
+
## Commit Hygiene
|
|
71
|
+
|
|
72
|
+
Commit canonical source that should travel:
|
|
73
|
+
|
|
74
|
+
- instructions
|
|
75
|
+
- snippets
|
|
76
|
+
- skills
|
|
77
|
+
- agents
|
|
78
|
+
- MCP definitions without secrets
|
|
79
|
+
- project sync policy
|
|
80
|
+
|
|
81
|
+
Do not commit:
|
|
82
|
+
|
|
83
|
+
- generated index or graph state
|
|
84
|
+
- machine-local writeback queues
|
|
85
|
+
- proposal metadata and draft patches
|
|
86
|
+
- rendered tool outputs
|
|
87
|
+
- local secret overlays
|
|
88
|
+
|
|
89
|
+
Project-scoped writebacks and evolution proposals are mirrored for review under global `~/.ai/writebacks/projects/<slug-hash>/` and `~/.ai/evolution/projects/<slug-hash>/`, not under repo-local `<repo>/.ai`.
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
# Writeback
|
|
1
|
+
# Writeback and Evolution
|
|
2
2
|
|
|
3
3
|
Writeback preserves useful signal from real work. Evolution turns repeated signal into reviewable changes.
|
|
4
4
|
|
|
5
|
+
Use this when normal work exposes the same problem more than once: shallow tests, missing context, stale guidance, a slow tool path, or a missing skill. Ignore it for one-off preferences and vague complaints.
|
|
6
|
+
|
|
5
7
|
Use this loop when a task exposes durable friction:
|
|
6
8
|
|
|
7
9
|
1. record one targeted writeback
|
|
@@ -77,7 +79,7 @@ fclt ai evolve promote EV-00003 --to global --project
|
|
|
77
79
|
|
|
78
80
|
## Review Artifacts
|
|
79
81
|
|
|
80
|
-
Runtime JSON queues, proposal metadata, draft patches, and journals stay in machine-local
|
|
82
|
+
Runtime JSON queues, proposal metadata, draft patches, and journals stay in machine-local `fclt` state.
|
|
81
83
|
|
|
82
84
|
Human-readable Markdown mirrors live under global `~/.ai`:
|
|
83
85
|
|
|
@@ -95,3 +97,9 @@ Project-scoped artifacts include project metadata in frontmatter. They do not ge
|
|
|
95
97
|
Global instructions, skills, plugins, and other high-risk shared surfaces require explicit review before apply. Project-scoped additive markdown changes can be lower risk, but still need evidence and a clear target.
|
|
96
98
|
|
|
97
99
|
Executable product or tooling work belongs in the task system. Use evolution for the reusable instruction, skill, prompt, or operating-model change that should survive that work.
|
|
100
|
+
|
|
101
|
+
## Next
|
|
102
|
+
|
|
103
|
+
- Read [Composable Capability](./composable-capability.md) to choose the smallest target.
|
|
104
|
+
- Read [Automations](./automations.md) to schedule recurring review loops.
|
|
105
|
+
- Read [Security and trust](./security-trust.md) before applying global changes.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "facult",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.13.0",
|
|
4
4
|
"description": "Manage canonical AI capabilities, sync surfaces, and evolution state.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
"bin/fclt.cjs",
|
|
33
33
|
"bin/facult.cjs",
|
|
34
34
|
"docs/**/*.md",
|
|
35
|
+
"docs/**/*.png",
|
|
35
36
|
"src/**/*.ts",
|
|
36
37
|
"!src/**/*.test.ts",
|
|
37
38
|
"README.md",
|