facult 2.1.0 → 2.1.2
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 +37 -3
- package/bin/fclt.cjs +2 -2
- package/package.json +4 -4
- package/src/self-update.ts +1 -1
package/README.md
CHANGED
|
@@ -4,8 +4,11 @@
|
|
|
4
4
|
<a aria-label="NPM version" href="https://www.npmjs.com/package/facult">
|
|
5
5
|
<img alt="facult npm version" src="https://img.shields.io/npm/v/facult.svg?style=flat-square&logo=npm&labelColor=000000&label=facult">
|
|
6
6
|
</a>
|
|
7
|
-
<a aria-label="
|
|
8
|
-
<img alt="
|
|
7
|
+
<a aria-label="Homebrew tap" href="https://github.com/hack-dance/homebrew-tap">
|
|
8
|
+
<img alt="Homebrew tap" src="https://img.shields.io/badge/homebrew-hack--dance%2Ftap%2Ffclt-FBB040.svg?style=flat-square&logo=homebrew&logoColor=white&labelColor=000000">
|
|
9
|
+
</a>
|
|
10
|
+
<a aria-label="CI status" href="https://github.com/hack-dance/fclt/actions/workflows/ci.yml">
|
|
11
|
+
<img alt="CI" src="https://img.shields.io/github/actions/workflow/status/hack-dance/fclt/ci.yml?branch=main&style=flat-square&logo=github&label=ci&labelColor=000000">
|
|
9
12
|
</a>
|
|
10
13
|
<a aria-label="hack.dance" href="https://hack.dance">
|
|
11
14
|
<img alt="Made by hack.dance" src="https://img.shields.io/badge/MADE%20BY%20HACK.DANCE-000000.svg?style=flat-square&labelColor=000000">
|
|
@@ -15,6 +18,10 @@
|
|
|
15
18
|
</a>
|
|
16
19
|
</div>
|
|
17
20
|
|
|
21
|
+
<p align="center">
|
|
22
|
+
<img alt="fclt demo" src="./Ghostty.gif">
|
|
23
|
+
</p>
|
|
24
|
+
|
|
18
25
|
`fclt` is a CLI for building and evolving AI faculties across tools, users, and projects.
|
|
19
26
|
|
|
20
27
|
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.
|
|
@@ -85,6 +92,12 @@ That means:
|
|
|
85
92
|
- builtin agents sync into tool agent directories when the tool supports agents
|
|
86
93
|
- if you do not author your own `AGENTS.global.md`, `fclt` renders a builtin global baseline doc into tool-native global docs
|
|
87
94
|
|
|
95
|
+
The activation point is managed mode:
|
|
96
|
+
- until you run `fclt manage <tool>`, the builtin operating-model layer is just packaged capability
|
|
97
|
+
- once a tool is managed, the default operating-model layer becomes live for that tool automatically
|
|
98
|
+
- for Codex, Claude, and Cursor, that means the core global doc surface plus the bundled writeback/evolution agents and skills are what agents actually see on disk
|
|
99
|
+
- this is why the normal setup step is to manage the tools you care about first, then sync
|
|
100
|
+
|
|
88
101
|
This is intentionally virtual at the canonical level:
|
|
89
102
|
- builtin defaults remain part of the packaged tool
|
|
90
103
|
- your personal `~/.ai` stays clean unless you explicitly vendor or override something
|
|
@@ -92,6 +105,12 @@ This is intentionally virtual at the canonical level:
|
|
|
92
105
|
|
|
93
106
|
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.
|
|
94
107
|
|
|
108
|
+
More concretely:
|
|
109
|
+
- the normal path is not a human manually typing `fclt ai ...` after every task
|
|
110
|
+
- the bundled operating-model layer is meant to instruct synced agents and skills to notice reusable signal, preserve it, and push it toward writeback/evolution
|
|
111
|
+
- the CLI remains the explicit operator surface for inspection, review, cleanup, and controlled apply
|
|
112
|
+
- the generated state under `.ai/.facult/` gives those agents a durable thread of what was learned, when it was learned, what asset it pointed at, and what proposals or reviews happened afterward
|
|
113
|
+
|
|
95
114
|
If you want to disable the builtin default layer for a specific global or project canonical root:
|
|
96
115
|
|
|
97
116
|
```toml
|
|
@@ -154,6 +173,12 @@ This makes it possible to answer:
|
|
|
154
173
|
Writeback is the act of recording that signal in a structured way.
|
|
155
174
|
Evolution is the act of grouping that signal into reviewable proposals and applying it back into canonical assets.
|
|
156
175
|
|
|
176
|
+
The intended workflow is agent-driven by default:
|
|
177
|
+
- synced global docs, agents, and skills should push your tooling toward creating writebacks when something important was learned
|
|
178
|
+
- specialist agents such as `writeback-curator`, `evolution-planner`, and `scope-promoter` are there to help turn that signal into cleaner proposals and scope decisions
|
|
179
|
+
- the CLI is what you use when you want to inspect, override, review, reject, apply, or otherwise operate the system directly
|
|
180
|
+
- the point is not a new UI. The point is that the operating layer itself can accumulate memory and context across tasks, sessions, and tools
|
|
181
|
+
|
|
157
182
|
This matters because otherwise the same problems repeat in chat without ever improving the actual operating layer. With `fclt`, you can:
|
|
158
183
|
- record a weak verification pattern
|
|
159
184
|
- group repeated writebacks around an instruction or agent
|
|
@@ -196,7 +221,7 @@ npx --yes -p facult fclt --help
|
|
|
196
221
|
Direct binary install from GitHub Releases (macOS/Linux):
|
|
197
222
|
|
|
198
223
|
```bash
|
|
199
|
-
curl -fsSL https://github.com/hack-dance/
|
|
224
|
+
curl -fsSL https://github.com/hack-dance/fclt/releases/latest/download/fclt-install.sh | bash
|
|
200
225
|
```
|
|
201
226
|
|
|
202
227
|
Windows and manual installs can download the correct binary from each release page:
|
|
@@ -294,6 +319,8 @@ fclt sync
|
|
|
294
319
|
```
|
|
295
320
|
|
|
296
321
|
At this point, your selected skills are actively synced to all managed tools.
|
|
322
|
+
This is also the point where the default operating-model layer becomes active for those tools. If you manage Codex or Claude, the bundled learning/writeback/evolution guidance is no longer just discoverable in `fclt`; it is rendered into the managed global doc surface and synced alongside the bundled agents and skills.
|
|
323
|
+
|
|
297
324
|
If you run these commands from inside a repo that has `<repo>/.ai`, `facult` targets the project-local canonical store and repo-local tool outputs by default.
|
|
298
325
|
On first entry to managed mode, use `--dry-run` first if the live tool already has local content. `facult` will show what it would adopt into the active canonical store across skills, agents, docs, rules, config, and MCP, plus any conflicts. Then rerun with `--adopt-existing`; if names or files collide, add `--existing-conflicts keep-canonical` or `--existing-conflicts keep-existing`.
|
|
299
326
|
For builtin-backed rendered defaults, `facult` now tracks the last managed render hash. If a user edits the generated target locally, normal sync warns and preserves that local edit instead of silently overwriting it. To replace the local edit with the latest packaged builtin default, rerun sync with `--builtin-conflicts overwrite`.
|
|
@@ -519,6 +546,7 @@ Runtime state stays generated and local inside the active canonical root:
|
|
|
519
546
|
That split is intentional:
|
|
520
547
|
- canonical source remains in `~/.ai` or `<repo>/.ai`
|
|
521
548
|
- writeback queues, journals, proposal records, trust state, autosync state, and other Facult-owned runtime/config state stay inside `.ai/.facult/` rather than inside the tool homes
|
|
549
|
+
- those records create a historical thread agents can inspect over time: what changed, what triggered it, which asset it pointed at, what proposal was drafted, how it was reviewed, and whether it was applied or rejected
|
|
522
550
|
|
|
523
551
|
Use writeback when:
|
|
524
552
|
- a task exposed a weak or misleading verification loop
|
|
@@ -530,6 +558,12 @@ Do not think of writeback as “taking notes.” Think of it as preserving signa
|
|
|
530
558
|
|
|
531
559
|
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.
|
|
532
560
|
|
|
561
|
+
In other words:
|
|
562
|
+
- agents should be the ones noticing friction and capturing it
|
|
563
|
+
- skills should be the ones teaching when writeback or evolution is warranted
|
|
564
|
+
- proposal history should give future agents enough context to understand why a rule, instruction, or prompt changed
|
|
565
|
+
- you drop to the CLI when you want to inspect the thread, steer it, or make the final call
|
|
566
|
+
|
|
533
567
|
Current apply semantics are intentionally policy-bound:
|
|
534
568
|
- targets are resolved through the generated graph when possible and fall back to canonical ref resolution for missing assets
|
|
535
569
|
- apply is limited to markdown canonical assets
|
package/bin/fclt.cjs
CHANGED
|
@@ -11,7 +11,7 @@ const { spawnSync } = require("node:child_process");
|
|
|
11
11
|
const pkg = require("../package.json");
|
|
12
12
|
|
|
13
13
|
const REPO_OWNER = "hack-dance";
|
|
14
|
-
const REPO_NAME = "
|
|
14
|
+
const REPO_NAME = "fclt";
|
|
15
15
|
const PACKAGE_NAME = "facult";
|
|
16
16
|
const DOWNLOAD_RETRIES = 12;
|
|
17
17
|
const DOWNLOAD_RETRY_DELAY_MS = 5000;
|
|
@@ -67,7 +67,7 @@ async function main() {
|
|
|
67
67
|
`Reason: ${message}`,
|
|
68
68
|
"",
|
|
69
69
|
"Try installing directly from releases:",
|
|
70
|
-
"https://github.com/hack-dance/
|
|
70
|
+
"https://github.com/hack-dance/fclt/releases",
|
|
71
71
|
].join("\n")
|
|
72
72
|
);
|
|
73
73
|
process.exit(1);
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "facult",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.2",
|
|
4
4
|
"description": "Manage canonical AI capabilities, sync surfaces, and evolution state.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
|
-
"url": "git+https://github.com/hack-dance/
|
|
9
|
+
"url": "git+https://github.com/hack-dance/fclt.git"
|
|
10
10
|
},
|
|
11
|
-
"homepage": "https://github.com/hack-dance/
|
|
11
|
+
"homepage": "https://github.com/hack-dance/fclt#readme",
|
|
12
12
|
"bugs": {
|
|
13
|
-
"url": "https://github.com/hack-dance/
|
|
13
|
+
"url": "https://github.com/hack-dance/fclt/issues"
|
|
14
14
|
},
|
|
15
15
|
"keywords": [
|
|
16
16
|
"cli",
|
package/src/self-update.ts
CHANGED