fdeops 3.11.0 → 3.11.1
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 +3 -1
- package/bin/check.js +16 -0
- package/mcp/fdeops-ingest/package.json +1 -1
- package/package.json +1 -1
- package/plugin.json +1 -1
- package/skills/fde/SKILL.md +2 -2
package/README.md
CHANGED
|
@@ -41,9 +41,11 @@ Nothing to install to see it on a fake client: `npx fdeops demo`.
|
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
|
-
npx skills add suboss87/fdeops
|
|
44
|
+
npx skills add suboss87/fdeops --skill fde # Cursor, Codex, skills-compatible hosts
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
+
That is one skill, not a catalogue - `@fde` routes the whole method. The CLI needs no install either: the skill reaches for `npx fdeops` when `fde` is not on the PATH. (Drop `--skill fde` and you also get `testing-fieldbook`, which is for people contributing to this repo, not for field work.)
|
|
48
|
+
|
|
47
49
|
Claude Code additionally gets session hooks, so context arrives before you type. Everywhere else it is the same fieldbook, loaded when you ask.
|
|
48
50
|
|
|
49
51
|
**2. Bind once** in the client workspace:
|
package/bin/check.js
CHANGED
|
@@ -270,6 +270,22 @@ if (!readme.includes('fde-engagements') || !/fdeops.*init.*engagement/i.test(rea
|
|
|
270
270
|
fail('README must document fde-engagements + init flow')
|
|
271
271
|
} else ok('README engagement path')
|
|
272
272
|
|
|
273
|
+
// The contributor-only testing skill lives in .agents/skills/, so a bare
|
|
274
|
+
// `skills add` installs it too. The advertised command must name the one skill
|
|
275
|
+
// a field user wants.
|
|
276
|
+
for (const m of readme.match(/^.*npx skills add .*$/gm) || []) {
|
|
277
|
+
if (!m.includes('--skill fde')) {
|
|
278
|
+
fail(`README skills-add command must pin --skill fde: ${m.trim()}`)
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
ok('README skills install is one skill')
|
|
282
|
+
|
|
283
|
+
// A skill-only install has no fde on the PATH; the router must reach npx before
|
|
284
|
+
// falling back to writing memory by hand.
|
|
285
|
+
if (!read('skills/fde/SKILL.md').includes('npx --yes fdeops')) {
|
|
286
|
+
fail('skills/fde/SKILL.md must fall back to npx --yes fdeops when the CLI is not installed')
|
|
287
|
+
} else ok('SKILL.md npx CLI fallback')
|
|
288
|
+
|
|
273
289
|
if (!fs.existsSync(path.join(root, 'docs', 'USAGE.md'))) {
|
|
274
290
|
fail('docs/USAGE.md missing')
|
|
275
291
|
} else ok('docs/USAGE.md')
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fdeops",
|
|
3
|
-
"version": "3.11.
|
|
3
|
+
"version": "3.11.1",
|
|
4
4
|
"description": "Field kit for engineers embedded in client work - a real CLI (recon, memory, portfolio), one @fde skill with field judgment on top, and hooks that make it automatic. Claude Code plugin and any agent that loads skills.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"fdeops": "bin/install.js",
|
package/plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
3
3
|
"name": "fdeops",
|
|
4
|
-
"version": "3.11.
|
|
4
|
+
"version": "3.11.1",
|
|
5
5
|
"description": "Engagement fieldbook for Forward Deployed Engineers: per-client memory in local .fde/ files, one @fde skill, land to close methodology. Local-only, no network.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Subash Natarajan",
|
package/skills/fde/SKILL.md
CHANGED
|
@@ -74,7 +74,7 @@ When NOT to interrogate or challenge: unambiguous one-liners, mechanical ops, FD
|
|
|
74
74
|
- Data tagged `<private>` (sacred data, PHI, cardholder, classified) is **redacted from CLI, dashboard, and hook-injected context**. Do **not** open raw `<private>` blocks with file tools (that bypasses redaction) or paste them into prompts/subagents - work around them, never with them.
|
|
75
75
|
- Locked-down engagement (no AI on their code)? Use the CLI + the fieldbook only. The memory layer is the FDE's own notes, not customer code.
|
|
76
76
|
|
|
77
|
-
**Engagement path - zero ceremony.** Run `fde resume` (
|
|
77
|
+
**Engagement path - zero ceremony.** Run `fde resume` (fallbacks, in order: `node ~/.claude/fdeops/fde.js resume`, then `npx --yes fdeops resume` - the CLI is one command away on any machine with Node, so reach for it before doing memory work by hand). The **workspace registry** (written once by `fde resume --init <name>`) is the normal path; resolution order is env var override → registry → pointer file → workspace-name match (read-only) → `./.fde`. Writes require a bind (or `FDEOPS_ENGAGEMENT`), not folder name alone. It prints a **bounded** view of `context.md` - the curated head (state, next action) plus the most recent activity, with the older session log collapsed (use `fde resume --full` when you genuinely need the whole history). If it reports NO ENGAGEMENT: confirm the client name in conversation (one question), then run `fde resume --init <name>` yourself - the one setup step; the FDE never runs setup commands. Never install fdeops on infrastructure the FDE does not control.
|
|
78
78
|
|
|
79
79
|
**You run the `fde` CLI for deterministic work - never improvise shell, never hand the command to the FDE:**
|
|
80
80
|
|
|
@@ -96,7 +96,7 @@ When NOT to interrogate or challenge: unambiguous one-liners, mechanical ops, FD
|
|
|
96
96
|
|
|
97
97
|
**The debrief verb.** Highest-frequency loop. When the FDE shares notes or says "debrief": **you** run the smart path (write notes to a temp file if needed). `--smart` writes a propose file via deterministic heuristics (existing prefixes + light keywords); authentic rambling notes often land mostly in context until **you** rewrite lines with type prefixes. Show the proposed routing in plain language. Only `--apply` (or pipe prefixed lines) after they confirm. Never ask them to run the CLI. Detail: `references/debrief.md`.
|
|
98
98
|
|
|
99
|
-
CLI
|
|
99
|
+
CLI genuinely unavailable (no Node, offline, npx blocked) → use the manual fallbacks inside each reference (still you write files; still never ask the FDE to run setup). A skill-only install is not "unavailable": run the verb through `npx --yes fdeops …` so the gates, dating and redaction still hold.
|
|
100
100
|
|
|
101
101
|
**Token model - where the cost goes.** Deterministic work is the CLI's job and costs **zero model tokens**: memory writes, recon, receipts, status, dashboard, and the bounded `fde resume`. Session-start hooks inject **TRIAGE + bounded `context.md` + a one-line pointer** - never this full skill body (that loads only when `@fde` triggers). Spend tokens only on judgment - reading the situation, routing, running the phase method, writing the artifact. Three rules keep a full day of FDE work cheap: load the router first and pull **one** reference only when you route to it; never dump a whole `.fde/` file into context - read the bounded resume, or `fde receipts <term>` for a targeted slice; don't re-read files you already have. The expensive model should fire for real decisions, not for plumbing the CLI already does.
|
|
102
102
|
|