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 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="CI status" href="https://github.com/hack-dance/facult/actions/workflows/ci.yml">
8
- <img alt="CI" src="https://img.shields.io/github/actions/workflow/status/hack-dance/facult/ci.yml?branch=main&style=flat-square&logo=github&label=ci&labelColor=000000">
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/facult/releases/latest/download/fclt-install.sh | bash
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 = "facult";
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/facult/releases",
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.0",
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/facult.git"
9
+ "url": "git+https://github.com/hack-dance/fclt.git"
10
10
  },
11
- "homepage": "https://github.com/hack-dance/facult#readme",
11
+ "homepage": "https://github.com/hack-dance/fclt#readme",
12
12
  "bugs": {
13
- "url": "https://github.com/hack-dance/facult/issues"
13
+ "url": "https://github.com/hack-dance/fclt/issues"
14
14
  },
15
15
  "keywords": [
16
16
  "cli",
@@ -7,7 +7,7 @@ import {
7
7
  } from "./paths";
8
8
 
9
9
  const REPO_OWNER = "hack-dance";
10
- const REPO_NAME = "facult";
10
+ const REPO_NAME = "fclt";
11
11
  const PACKAGE_NAME = "facult";
12
12
  const DOWNLOAD_RETRIES = 12;
13
13
  const DOWNLOAD_RETRY_DELAY_MS = 5000;