facult 1.3.0 → 2.1.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 +198 -178
- package/bin/facult.cjs +1 -268
- package/bin/fclt.cjs +264 -0
- package/package.json +6 -3
- package/src/ai.ts +23 -23
- package/src/audit/index.ts +11 -11
- package/src/audit/tui.ts +6 -6
- package/src/autosync.ts +11 -8
- package/src/consolidate.ts +3 -3
- package/src/doctor.ts +5 -5
- package/src/enable-disable.ts +7 -7
- package/src/graph-query.ts +1 -1
- package/src/index-builder.ts +2 -2
- package/src/index.ts +52 -52
- package/src/manage.ts +9 -9
- package/src/migrate.ts +3 -3
- package/src/paths.ts +4 -4
- package/src/query.ts +4 -4
- package/src/remote-source-policy.ts +8 -8
- package/src/remote.ts +25 -25
- package/src/scan.ts +8 -8
- package/src/schema.ts +1 -1
- package/src/self-update.ts +40 -16
- package/src/snippets-cli.ts +6 -6
- package/src/trust.ts +8 -8
- package/src/tui.ts +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# fclt
|
|
2
2
|
|
|
3
3
|
<div align="center">
|
|
4
4
|
<a aria-label="NPM version" href="https://www.npmjs.com/package/facult">
|
|
@@ -15,34 +15,41 @@
|
|
|
15
15
|
</a>
|
|
16
16
|
</div>
|
|
17
17
|
|
|
18
|
-
`
|
|
18
|
+
`fclt` is a CLI for building and evolving AI faculties across tools, users, and projects.
|
|
19
|
+
|
|
20
|
+
Most AI tooling manages files. `fclt` manages faculties: the instructions, snippets, templates, skills, agents, rules, and learning loops that should compound, improve, and survive the next session.
|
|
19
21
|
|
|
20
22
|
It helps you:
|
|
21
|
-
-
|
|
22
|
-
- consolidate everything into one canonical store
|
|
23
|
-
- review trust/security before installing remote content
|
|
24
|
-
- sync managed outputs into Codex, Cursor, and Claude
|
|
25
|
-
- manage a git-backed AI store under `~/.ai` and repo-local `.ai/`
|
|
26
|
-
- model relationships between instructions, snippets, agents, skills, and rendered tool outputs
|
|
23
|
+
- turn repeated friction into reusable capability
|
|
27
24
|
- preserve learning through writeback and evolve canonical assets over time
|
|
25
|
+
- consolidate AI behavior into one canonical store
|
|
26
|
+
- compose prompts, agents, skills, and tool outputs from reusable snippets and templates
|
|
27
|
+
- discover what exists, what depends on what, and what should change next
|
|
28
|
+
- sync managed outputs into Codex, Cursor, and Claude
|
|
29
|
+
- review trust/security before installing remote content
|
|
30
|
+
- keep that operating layer in a git-backed store under `~/.ai` and repo-local `.ai/`
|
|
31
|
+
|
|
32
|
+
## What fclt Is
|
|
33
|
+
|
|
34
|
+
If your agent setup feels scattered, `fclt` gives it memory, structure, and a way to improve.
|
|
28
35
|
|
|
29
|
-
|
|
36
|
+
A faculty is a reusable piece of AI behavior: an instruction, snippet, template, skill, agent, rule, or learned improvement that you want to keep around and make better.
|
|
30
37
|
|
|
31
|
-
|
|
38
|
+
That matters because a lot of useful AI behavior is compositional. You want small reusable blocks, a clean way to assemble them into bigger prompts and operating layers, and a safe way to render the final tool-native outputs without losing the source structure.
|
|
32
39
|
|
|
33
40
|
Think of it as:
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
- sync layer
|
|
37
|
-
-
|
|
38
|
-
- a local capability graph for discovering what exists and what depends on what
|
|
41
|
+
- a canonical home for your AI faculties
|
|
42
|
+
- a composition system for snippets, templates, and rendered AI behavior
|
|
43
|
+
- a sync layer for projecting them into real tools
|
|
44
|
+
- a discovery graph for seeing what exists and what depends on what
|
|
39
45
|
- a writeback/evolution loop for turning repeated friction into durable improvements
|
|
46
|
+
- an inventory and trust boundary for the assets you let into the system
|
|
40
47
|
|
|
41
|
-
## What
|
|
48
|
+
## What fclt Does
|
|
42
49
|
|
|
43
|
-
`
|
|
50
|
+
`fclt` is not a skills folder with a nicer CLI.
|
|
44
51
|
|
|
45
|
-
It
|
|
52
|
+
It works as five connected layers:
|
|
46
53
|
|
|
47
54
|
1. Canonical source
|
|
48
55
|
- global capability in `~/.ai`
|
|
@@ -65,7 +72,7 @@ It provides five connected layers:
|
|
|
65
72
|
|
|
66
73
|
## Default Operating Model
|
|
67
74
|
|
|
68
|
-
`
|
|
75
|
+
`fclt` ships with a built-in operating model for learning, writeback, and capability evolution. That pack includes default:
|
|
69
76
|
|
|
70
77
|
- instructions for evolution, integration, and project capability
|
|
71
78
|
- specialist agents such as `writeback-curator`, `evolution-planner`, and `scope-promoter`
|
|
@@ -76,14 +83,14 @@ When managed sync is enabled, these built-in assets are available by default eve
|
|
|
76
83
|
That means:
|
|
77
84
|
- builtin skills sync into managed tool skill directories by default
|
|
78
85
|
- builtin agents sync into tool agent directories when the tool supports agents
|
|
79
|
-
- if you do not author your own `AGENTS.global.md`, `
|
|
86
|
+
- if you do not author your own `AGENTS.global.md`, `fclt` renders a builtin global baseline doc into tool-native global docs
|
|
80
87
|
|
|
81
88
|
This is intentionally virtual at the canonical level:
|
|
82
89
|
- builtin defaults remain part of the packaged tool
|
|
83
90
|
- your personal `~/.ai` stays clean unless you explicitly vendor or override something
|
|
84
91
|
- the live tool output on disk still contains the rendered defaults, so users and agents can read them directly
|
|
85
92
|
|
|
86
|
-
In practice, this means
|
|
93
|
+
In practice, this means the system is meant to learn by default. The CLI is there when you want to operate it directly, but the default skills, agents, and global docs are supposed to make writeback and evolution available without ceremony.
|
|
87
94
|
|
|
88
95
|
If you want to disable the builtin default layer for a specific global or project canonical root:
|
|
89
96
|
|
|
@@ -100,7 +107,7 @@ Put that in `config.toml` or `config.local.toml` under the active canonical root
|
|
|
100
107
|
|
|
101
108
|
### Canonical vs rendered
|
|
102
109
|
|
|
103
|
-
`
|
|
110
|
+
`fclt` separates source-of-truth from tool-native output.
|
|
104
111
|
|
|
105
112
|
- canonical source lives in `~/.ai` or `<repo>/.ai`
|
|
106
113
|
- rendered outputs live in tool homes like `~/.codex`, `<repo>/.codex`, `~/.claude`, or `~/.cursor`
|
|
@@ -126,7 +133,7 @@ Project capability is allowed to extend or shadow global capability in merged vi
|
|
|
126
133
|
|
|
127
134
|
### The capability graph
|
|
128
135
|
|
|
129
|
-
`
|
|
136
|
+
`fclt` builds a generated graph of explicit relationships between canonical assets and rendered outputs.
|
|
130
137
|
|
|
131
138
|
That graph tracks things like:
|
|
132
139
|
- snippet markers
|
|
@@ -142,68 +149,79 @@ This makes it possible to answer:
|
|
|
142
149
|
|
|
143
150
|
### Writeback and evolution
|
|
144
151
|
|
|
145
|
-
`
|
|
152
|
+
`fclt` treats repeated failures, weak loops, missing context, and reusable patterns as signal worth preserving.
|
|
146
153
|
|
|
147
154
|
Writeback is the act of recording that signal in a structured way.
|
|
148
155
|
Evolution is the act of grouping that signal into reviewable proposals and applying it back into canonical assets.
|
|
149
156
|
|
|
150
|
-
This matters because otherwise the same problems repeat in chat without ever improving the actual operating layer. With `
|
|
157
|
+
This matters because otherwise the same problems repeat in chat without ever improving the actual operating layer. With `fclt`, you can:
|
|
151
158
|
- record a weak verification pattern
|
|
152
159
|
- group repeated writebacks around an instruction or agent
|
|
153
160
|
- draft a proposal to tighten that canonical asset
|
|
154
161
|
- review and apply the change in a controlled way
|
|
155
162
|
|
|
156
|
-
The
|
|
163
|
+
The point is not just better storage. The point is that your AI setup can change shape as it learns.
|
|
164
|
+
|
|
165
|
+
That is the core idea behind `fclt`: not just syncing skills, but growing faculties.
|
|
157
166
|
|
|
158
167
|
## Quick Start
|
|
159
168
|
|
|
160
|
-
### 1. Install
|
|
169
|
+
### 1. Install fclt
|
|
161
170
|
|
|
162
171
|
Recommended global install:
|
|
163
172
|
|
|
173
|
+
```bash
|
|
174
|
+
brew tap hack-dance/tap
|
|
175
|
+
brew install hack-dance/tap/fclt
|
|
176
|
+
fclt --help
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Package-manager install:
|
|
180
|
+
|
|
164
181
|
```bash
|
|
165
182
|
npm install -g facult
|
|
166
183
|
# or
|
|
167
184
|
bun add -g facult
|
|
168
|
-
|
|
185
|
+
fclt --help
|
|
169
186
|
```
|
|
170
187
|
|
|
188
|
+
The npm package name stays `facult` for registry compatibility. The installed command is still `fclt`.
|
|
189
|
+
|
|
171
190
|
One-off usage without global install:
|
|
172
191
|
|
|
173
192
|
```bash
|
|
174
|
-
npx facult --help
|
|
175
|
-
bunx facult --help
|
|
193
|
+
npx --yes -p facult fclt --help
|
|
176
194
|
```
|
|
177
195
|
|
|
178
196
|
Direct binary install from GitHub Releases (macOS/Linux):
|
|
179
197
|
|
|
180
198
|
```bash
|
|
181
|
-
curl -fsSL https://github.com/hack-dance/facult/releases/latest/download/
|
|
199
|
+
curl -fsSL https://github.com/hack-dance/facult/releases/latest/download/fclt-install.sh | bash
|
|
182
200
|
```
|
|
183
201
|
|
|
184
202
|
Windows and manual installs can download the correct binary from each release page:
|
|
185
|
-
`
|
|
203
|
+
`fclt-<version>-<platform>-<arch>`.
|
|
186
204
|
|
|
187
205
|
Update later with:
|
|
188
206
|
|
|
189
207
|
```bash
|
|
190
|
-
|
|
208
|
+
fclt self-update
|
|
191
209
|
# or
|
|
192
|
-
|
|
210
|
+
fclt update --self
|
|
193
211
|
```
|
|
194
212
|
|
|
195
213
|
Pin to a specific version:
|
|
196
214
|
|
|
197
215
|
```bash
|
|
198
|
-
|
|
216
|
+
fclt self-update --version 0.0.1
|
|
199
217
|
```
|
|
200
218
|
|
|
201
219
|
### 2. Start with a read-only inventory (recommended first)
|
|
202
220
|
|
|
203
221
|
```bash
|
|
204
|
-
|
|
222
|
+
fclt scan --show-duplicates
|
|
205
223
|
# optional machine-readable output
|
|
206
|
-
|
|
224
|
+
fclt scan --json
|
|
207
225
|
```
|
|
208
226
|
|
|
209
227
|
`scan` is read-only. It inspects local configs and reports what `facult` found without changing files.
|
|
@@ -211,8 +229,8 @@ facult scan --json
|
|
|
211
229
|
### 3. Import existing skills/configs
|
|
212
230
|
|
|
213
231
|
```bash
|
|
214
|
-
|
|
215
|
-
|
|
232
|
+
fclt consolidate --auto keep-current --from ~/.codex/skills --from ~/.agents/skills
|
|
233
|
+
fclt index
|
|
216
234
|
```
|
|
217
235
|
|
|
218
236
|
Why `keep-current`: it is deterministic and non-interactive for duplicate sources.
|
|
@@ -225,8 +243,8 @@ Canonical source root: `~/.ai` for global work, or `<repo>/.ai` for project-loca
|
|
|
225
243
|
|
|
226
244
|
```bash
|
|
227
245
|
cd /path/to/repo
|
|
228
|
-
bunx
|
|
229
|
-
bunx
|
|
246
|
+
bunx fclt templates init project-ai
|
|
247
|
+
bunx fclt index
|
|
230
248
|
```
|
|
231
249
|
|
|
232
250
|
This seeds `<repo>/.ai` from the built-in Facult operating-model pack and writes a merged project index/graph under `<repo>/.ai/.facult/ai/`.
|
|
@@ -234,45 +252,45 @@ This seeds `<repo>/.ai` from the built-in Facult operating-model pack and writes
|
|
|
234
252
|
### 4. Inspect what you have
|
|
235
253
|
|
|
236
254
|
```bash
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
255
|
+
fclt list skills
|
|
256
|
+
fclt list instructions
|
|
257
|
+
fclt list mcp
|
|
258
|
+
fclt show requesting-code-review
|
|
259
|
+
fclt show instruction:WRITING
|
|
260
|
+
fclt show mcp:github
|
|
261
|
+
fclt find verification
|
|
262
|
+
fclt graph show instruction:WRITING
|
|
263
|
+
fclt graph deps AGENTS.global.md
|
|
264
|
+
fclt graph dependents @ai/instructions/WRITING.md
|
|
265
|
+
fclt ai writeback add --kind weak_verification --summary "Checks were too shallow" --asset instruction:VERIFICATION
|
|
266
|
+
fclt ai evolve propose
|
|
267
|
+
fclt ai evolve draft EV-00001
|
|
268
|
+
fclt ai evolve accept EV-00001
|
|
269
|
+
fclt ai evolve apply EV-00001
|
|
252
270
|
```
|
|
253
271
|
|
|
254
272
|
Context controls:
|
|
255
273
|
|
|
256
274
|
```bash
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
275
|
+
fclt list instructions --global
|
|
276
|
+
fclt list instructions --project
|
|
277
|
+
fclt find verification --scope merged --source project
|
|
278
|
+
fclt sync codex --project
|
|
279
|
+
fclt autosync status --global
|
|
280
|
+
fclt list agents --root /path/to/repo/.ai
|
|
263
281
|
```
|
|
264
282
|
|
|
265
283
|
### 5. Enable managed mode for your tools
|
|
266
284
|
|
|
267
285
|
```bash
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
286
|
+
fclt manage codex --dry-run
|
|
287
|
+
fclt manage codex --adopt-existing
|
|
288
|
+
fclt sync codex --builtin-conflicts overwrite
|
|
289
|
+
fclt manage cursor
|
|
290
|
+
fclt manage claude
|
|
273
291
|
|
|
274
|
-
|
|
275
|
-
|
|
292
|
+
fclt enable requesting-code-review receiving-code-review brainstorming systematic-debugging --for codex,cursor,claude
|
|
293
|
+
fclt sync
|
|
276
294
|
```
|
|
277
295
|
|
|
278
296
|
At this point, your selected skills are actively synced to all managed tools.
|
|
@@ -283,8 +301,8 @@ For builtin-backed rendered defaults, `facult` now tracks the last managed rende
|
|
|
283
301
|
### 6. Turn on background autosync
|
|
284
302
|
|
|
285
303
|
```bash
|
|
286
|
-
|
|
287
|
-
|
|
304
|
+
fclt autosync install --git-remote origin --git-branch main --git-interval-minutes 60
|
|
305
|
+
fclt autosync status
|
|
288
306
|
```
|
|
289
307
|
|
|
290
308
|
This installs a macOS LaunchAgent that:
|
|
@@ -297,14 +315,14 @@ If the repo hits a rebase conflict, remote autosync stops and reports the blocke
|
|
|
297
315
|
### 7. Turn on source trust and strict install flow
|
|
298
316
|
|
|
299
317
|
```bash
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
318
|
+
fclt sources list
|
|
319
|
+
fclt verify-source skills.sh --json
|
|
320
|
+
fclt sources trust skills.sh --note "reviewed"
|
|
303
321
|
|
|
304
|
-
|
|
322
|
+
fclt install skills.sh:code-review --as code-review-skills-sh --strict-source-trust
|
|
305
323
|
```
|
|
306
324
|
|
|
307
|
-
## Use
|
|
325
|
+
## Use fclt from your agents
|
|
308
326
|
|
|
309
327
|
`facult` is CLI-first. The practical setup is:
|
|
310
328
|
1. Install `facult` globally so any agent runtime can execute it.
|
|
@@ -313,24 +331,24 @@ facult install skills.sh:code-review --as code-review-skills-sh --strict-source-
|
|
|
313
331
|
|
|
314
332
|
```bash
|
|
315
333
|
# Scaffold reusable templates in the canonical store
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
334
|
+
fclt templates init agents
|
|
335
|
+
fclt templates init claude
|
|
336
|
+
fclt templates init skill facult-manager
|
|
319
337
|
|
|
320
338
|
# Enable that skill for managed tools
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
339
|
+
fclt manage codex
|
|
340
|
+
fclt manage cursor
|
|
341
|
+
fclt manage claude
|
|
342
|
+
fclt enable facult-manager --for codex,cursor,claude
|
|
343
|
+
fclt sync
|
|
326
344
|
```
|
|
327
345
|
|
|
328
346
|
Optional MCP scaffold:
|
|
329
347
|
|
|
330
348
|
```bash
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
349
|
+
fclt templates init mcp facult-cli
|
|
350
|
+
fclt enable mcp:facult-cli --for codex,cursor,claude
|
|
351
|
+
fclt sync
|
|
334
352
|
```
|
|
335
353
|
|
|
336
354
|
Note: `templates init mcp ...` is a scaffold, not a running server by itself.
|
|
@@ -424,7 +442,7 @@ Recommended split:
|
|
|
424
442
|
- `~/.ai/config.toml` or `<repo>/.ai/config.toml`: tracked, portable, non-secret refs/defaults
|
|
425
443
|
- `~/.ai/config.local.toml` or `<repo>/.ai/config.local.toml`: ignored, machine-local paths and secrets
|
|
426
444
|
- `[builtin].sync_defaults = false`: disable builtin default sync/materialization for this root
|
|
427
|
-
- `
|
|
445
|
+
- `fclt sync --builtin-conflicts overwrite`: allow packaged builtin defaults to overwrite locally modified generated targets
|
|
428
446
|
|
|
429
447
|
### Snippets
|
|
430
448
|
|
|
@@ -442,9 +460,9 @@ Resolution rules:
|
|
|
442
460
|
Commands:
|
|
443
461
|
|
|
444
462
|
```bash
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
463
|
+
fclt snippets list
|
|
464
|
+
fclt snippets show global/codex/baseline
|
|
465
|
+
fclt snippets sync [--dry-run] [file...]
|
|
448
466
|
```
|
|
449
467
|
|
|
450
468
|
Snippets are already used during global Codex `AGENTS.md` rendering.
|
|
@@ -454,9 +472,9 @@ Snippets are already used during global Codex `AGENTS.md` rendering.
|
|
|
454
472
|
The generated graph in `.ai/.facult/ai/graph.json` is queryable directly:
|
|
455
473
|
|
|
456
474
|
```bash
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
475
|
+
fclt graph show instruction:WRITING
|
|
476
|
+
fclt graph deps AGENTS.global.md
|
|
477
|
+
fclt graph dependents @project/instructions/TESTING.md
|
|
460
478
|
```
|
|
461
479
|
|
|
462
480
|
This is the explicit dependency layer for:
|
|
@@ -471,27 +489,27 @@ This is the explicit dependency layer for:
|
|
|
471
489
|
`facult` also has a local writeback/evolution substrate built on top of the graph:
|
|
472
490
|
|
|
473
491
|
```bash
|
|
474
|
-
|
|
492
|
+
fclt ai writeback add \
|
|
475
493
|
--kind weak_verification \
|
|
476
494
|
--summary "Verification guidance did not distinguish shallow checks from meaningful proof." \
|
|
477
495
|
--asset instruction:VERIFICATION \
|
|
478
496
|
--tag verification \
|
|
479
497
|
--tag false-positive
|
|
480
498
|
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
499
|
+
fclt ai writeback list
|
|
500
|
+
fclt ai writeback show WB-00001
|
|
501
|
+
fclt ai writeback group --by asset
|
|
502
|
+
fclt ai writeback summarize --by kind
|
|
503
|
+
fclt ai evolve propose
|
|
504
|
+
fclt ai evolve list
|
|
505
|
+
fclt ai evolve show EV-00001
|
|
506
|
+
fclt ai evolve draft EV-00001
|
|
507
|
+
fclt ai evolve review EV-00001
|
|
508
|
+
fclt ai evolve accept EV-00001
|
|
509
|
+
fclt ai evolve reject EV-00001 --reason "Needs a tighter draft"
|
|
510
|
+
fclt ai evolve supersede EV-00001 --by EV-00002
|
|
511
|
+
fclt ai evolve apply EV-00001
|
|
512
|
+
fclt ai evolve promote EV-00003 --to global --project
|
|
495
513
|
```
|
|
496
514
|
|
|
497
515
|
Runtime state stays generated and local inside the active canonical root:
|
|
@@ -510,7 +528,7 @@ Use writeback when:
|
|
|
510
528
|
|
|
511
529
|
Do not think of writeback as “taking notes.” Think of it as preserving signal that should change the system, not just the current conversation.
|
|
512
530
|
|
|
513
|
-
For many users, the normal entrypoint is not the CLI directly. The builtin operating-model layer is designed so synced agents, skills, and global docs can push the system toward writeback and evolution by default, while the `
|
|
531
|
+
For many users, the normal entrypoint is not the CLI directly. The builtin operating-model layer is designed so synced agents, skills, and global docs can push the system toward writeback and evolution by default, while the `fclt ai ...` commands remain the explicit operator surface when you want direct control.
|
|
514
532
|
|
|
515
533
|
Current apply semantics are intentionally policy-bound:
|
|
516
534
|
- targets are resolved through the generated graph when possible and fall back to canonical ref resolution for missing assets
|
|
@@ -538,29 +556,29 @@ Most inventory and sync commands support explicit canonical-root selection:
|
|
|
538
556
|
## Security and Trust
|
|
539
557
|
|
|
540
558
|
`facult` has two trust layers:
|
|
541
|
-
- Item trust: `
|
|
542
|
-
- Source trust: `
|
|
559
|
+
- Item trust: `fclt trust <name>` / `fclt untrust <name>`
|
|
560
|
+
- Source trust: `fclt sources ...` with levels `trusted`, `review`, `blocked`
|
|
543
561
|
|
|
544
562
|
`facult` also supports two audit modes:
|
|
545
563
|
|
|
546
564
|
1. Interactive audit workflow:
|
|
547
565
|
```bash
|
|
548
|
-
|
|
566
|
+
fclt audit
|
|
549
567
|
```
|
|
550
568
|
2. Static audit rules (deterministic pattern checks):
|
|
551
569
|
```bash
|
|
552
|
-
|
|
553
|
-
|
|
570
|
+
fclt audit --non-interactive --severity high
|
|
571
|
+
fclt audit --non-interactive mcp:github --severity medium --json
|
|
554
572
|
```
|
|
555
573
|
3. Agent-based audit (Claude/Codex review pass):
|
|
556
574
|
```bash
|
|
557
|
-
|
|
558
|
-
|
|
575
|
+
fclt audit --non-interactive --with claude --max-items 50
|
|
576
|
+
fclt audit --non-interactive --with codex --max-items all --json
|
|
559
577
|
```
|
|
560
578
|
|
|
561
579
|
Recommended security flow:
|
|
562
|
-
1. `
|
|
563
|
-
2. `
|
|
580
|
+
1. `fclt verify-source <source>`
|
|
581
|
+
2. `fclt sources trust <source>` only after review
|
|
564
582
|
3. use `--strict-source-trust` for `install`/`update`
|
|
565
583
|
4. run both static and agent audits on a schedule
|
|
566
584
|
|
|
@@ -579,70 +597,70 @@ Recommended security flow:
|
|
|
579
597
|
|
|
580
598
|
- Inventory and discovery
|
|
581
599
|
```bash
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
600
|
+
fclt scan [--from <path>] [--json] [--show-duplicates]
|
|
601
|
+
fclt list [skills|mcp|agents|snippets|instructions] [--enabled-for <tool>] [--untrusted] [--flagged] [--pending]
|
|
602
|
+
fclt show <name>
|
|
603
|
+
fclt show instruction:<name>
|
|
604
|
+
fclt show mcp:<name> [--show-secrets]
|
|
605
|
+
fclt find <query> [--json]
|
|
588
606
|
```
|
|
589
607
|
|
|
590
608
|
- Canonical store and migration
|
|
591
609
|
```bash
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
610
|
+
fclt consolidate [--auto keep-current|keep-incoming|keep-newest] [--from <path> ...]
|
|
611
|
+
fclt index [--force]
|
|
612
|
+
fclt migrate [--from <path>] [--dry-run] [--move] [--write-config]
|
|
595
613
|
```
|
|
596
614
|
|
|
597
615
|
- Managed mode and rollout
|
|
598
616
|
```bash
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
617
|
+
fclt manage <tool> [--dry-run] [--adopt-existing] [--existing-conflicts keep-canonical|keep-existing]
|
|
618
|
+
fclt unmanage <tool>
|
|
619
|
+
fclt managed
|
|
620
|
+
fclt enable <name> [--for <tool1,tool2,...>]
|
|
621
|
+
fclt enable mcp:<name> [--for <tool1,tool2,...>]
|
|
622
|
+
fclt disable <name> [--for <tool1,tool2,...>]
|
|
623
|
+
fclt sync [tool] [--dry-run] [--builtin-conflicts overwrite]
|
|
624
|
+
fclt autosync install [tool] [--git-remote <name>] [--git-branch <name>] [--git-interval-minutes <n>] [--git-disable]
|
|
625
|
+
fclt autosync status [tool]
|
|
626
|
+
fclt autosync restart [tool]
|
|
627
|
+
fclt autosync uninstall [tool]
|
|
610
628
|
```
|
|
611
629
|
|
|
612
630
|
- Remote catalogs and policies
|
|
613
631
|
```bash
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
632
|
+
fclt search <query> [--index <name>] [--limit <n>]
|
|
633
|
+
fclt install <index:item> [--as <name>] [--force] [--strict-source-trust]
|
|
634
|
+
fclt update [--apply] [--strict-source-trust]
|
|
635
|
+
fclt verify-source <name> [--json]
|
|
636
|
+
fclt sources list
|
|
637
|
+
fclt sources trust <source> [--note <text>]
|
|
638
|
+
fclt sources review <source> [--note <text>]
|
|
639
|
+
fclt sources block <source> [--note <text>]
|
|
640
|
+
fclt sources clear <source>
|
|
623
641
|
```
|
|
624
642
|
|
|
625
643
|
- Templates and snippets
|
|
626
644
|
```bash
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
645
|
+
fclt templates list
|
|
646
|
+
fclt templates init project-ai
|
|
647
|
+
fclt templates init skill <name>
|
|
648
|
+
fclt templates init mcp <name>
|
|
649
|
+
fclt templates init snippet <marker>
|
|
650
|
+
fclt templates init agents
|
|
651
|
+
fclt templates init claude
|
|
634
652
|
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
653
|
+
fclt snippets list
|
|
654
|
+
fclt snippets show <marker>
|
|
655
|
+
fclt snippets create <marker>
|
|
656
|
+
fclt snippets edit <marker>
|
|
657
|
+
fclt snippets sync [--dry-run] [file...]
|
|
640
658
|
```
|
|
641
659
|
|
|
642
660
|
For full flags and exact usage:
|
|
643
661
|
```bash
|
|
644
|
-
|
|
645
|
-
|
|
662
|
+
fclt --help
|
|
663
|
+
fclt <command> --help
|
|
646
664
|
```
|
|
647
665
|
|
|
648
666
|
### Root resolution
|
|
@@ -720,11 +738,11 @@ bun run install:bin
|
|
|
720
738
|
bun run install:status
|
|
721
739
|
```
|
|
722
740
|
|
|
723
|
-
Default install path is `~/.ai/.facult/bin/
|
|
741
|
+
Default install path is `~/.ai/.facult/bin/fclt`. You can pass a custom target dir via `--dir=/path`.
|
|
724
742
|
|
|
725
743
|
## Autosync
|
|
726
744
|
|
|
727
|
-
`
|
|
745
|
+
`fclt autosync` is the background propagation layer for managed installs.
|
|
728
746
|
|
|
729
747
|
Current v1 behavior:
|
|
730
748
|
- macOS LaunchAgent-backed
|
|
@@ -736,28 +754,28 @@ Current v1 behavior:
|
|
|
736
754
|
Recommended usage:
|
|
737
755
|
|
|
738
756
|
```bash
|
|
739
|
-
|
|
740
|
-
|
|
757
|
+
fclt autosync install
|
|
758
|
+
fclt autosync status
|
|
741
759
|
```
|
|
742
760
|
|
|
743
761
|
Project-local usage:
|
|
744
762
|
|
|
745
763
|
```bash
|
|
746
764
|
cd /path/to/repo
|
|
747
|
-
|
|
748
|
-
|
|
765
|
+
fclt autosync install codex
|
|
766
|
+
fclt autosync status codex
|
|
749
767
|
```
|
|
750
768
|
|
|
751
769
|
Tool-scoped service:
|
|
752
770
|
|
|
753
771
|
```bash
|
|
754
|
-
|
|
772
|
+
fclt autosync install codex
|
|
755
773
|
```
|
|
756
774
|
|
|
757
775
|
One-shot runner for verification/debugging:
|
|
758
776
|
|
|
759
777
|
```bash
|
|
760
|
-
|
|
778
|
+
fclt autosync run --service all --once
|
|
761
779
|
```
|
|
762
780
|
|
|
763
781
|
Remote git policy:
|
|
@@ -777,8 +795,9 @@ Release behavior:
|
|
|
777
795
|
2. `semantic-release` creates the version/tag and GitHub release (npm publish is disabled in this phase).
|
|
778
796
|
3. The same release workflow then builds platform binaries and uploads them to that GitHub release.
|
|
779
797
|
4. npm publish runs only after binary asset upload succeeds (`publish-npm` depends on `publish-assets`).
|
|
780
|
-
5. Published release assets include platform binaries, `facult-install.sh`, and `SHA256SUMS`.
|
|
781
|
-
6.
|
|
798
|
+
5. Published release assets include platform binaries, `fclt-install.sh`, `facult-install.sh`, and `SHA256SUMS`.
|
|
799
|
+
6. When `HOMEBREW_TAP_TOKEN` is configured, the release workflow also updates the Homebrew tap at `hack-dance/homebrew-tap`.
|
|
800
|
+
7. The npm package launcher resolves your platform, downloads the matching release binary, caches it under `~/.ai/.facult/runtime/<version>/<platform-arch>/`, and runs it.
|
|
782
801
|
|
|
783
802
|
Current prebuilt binary targets:
|
|
784
803
|
- `darwin-x64`
|
|
@@ -789,10 +808,11 @@ Current prebuilt binary targets:
|
|
|
789
808
|
Self-update behavior:
|
|
790
809
|
1. npm/bun global install: updates via package manager (`npm install -g facult@...` or `bun add -g facult@...`).
|
|
791
810
|
2. Direct binary install (release script/local binary path): downloads and replaces the binary in place.
|
|
792
|
-
3. Use `
|
|
811
|
+
3. Use `fclt self-update` (or `fclt update --self`).
|
|
793
812
|
|
|
794
813
|
Required secrets for publish:
|
|
795
814
|
- `NPM_TOKEN`
|
|
815
|
+
- `HOMEBREW_TAP_TOKEN` (fine-grained token with contents write access to `hack-dance/homebrew-tap`)
|
|
796
816
|
|
|
797
817
|
Local semantic-release dry-runs require a supported Node runtime (`>=24.10`).
|
|
798
818
|
|
|
@@ -827,13 +847,13 @@ bun run release:dry-run
|
|
|
827
847
|
|
|
828
848
|
## FAQ
|
|
829
849
|
|
|
830
|
-
### Does
|
|
850
|
+
### Does fclt run its own MCP server today?
|
|
831
851
|
|
|
832
|
-
Not as a first-party `
|
|
852
|
+
Not as a first-party `fclt mcp serve` runtime.
|
|
833
853
|
|
|
834
854
|
`facult` currently focuses on inventory, trust/audit, install/update, and managed sync of skills/MCP configs.
|
|
835
855
|
|
|
836
|
-
### Does
|
|
856
|
+
### Does fclt now manage global AI config, not just skills and MCP?
|
|
837
857
|
|
|
838
858
|
Yes. The core model now includes:
|
|
839
859
|
- canonical personal AI source in `~/.ai`
|
|
@@ -842,8 +862,8 @@ Yes. The core model now includes:
|
|
|
842
862
|
- tool-native configs such as `~/.codex/config.toml`
|
|
843
863
|
- tool-native rule files such as `~/.codex/rules/*.rules`
|
|
844
864
|
|
|
845
|
-
### Do I still need to run `
|
|
865
|
+
### Do I still need to run `fclt sync` manually?
|
|
846
866
|
|
|
847
867
|
If autosync is not installed, yes.
|
|
848
868
|
|
|
849
|
-
If autosync is installed, local changes under `~/.ai` propagate automatically to managed tools. Manual `
|
|
869
|
+
If autosync is installed, local changes under `~/.ai` propagate automatically to managed tools. Manual `fclt sync` is still useful for explicit repair, dry-runs, and non-daemon workflows.
|