fdeops 3.6.1 → 3.7.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 CHANGED
@@ -1,19 +1,29 @@
1
- # fdeops
1
+ # FDEOps
2
2
 
3
- **Your AI coding agent forgets your client every morning. fdeops remembers.**
3
+ **Your AI agent forgets your client every morning. fdeops remembers.**
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/fdeops)](https://www.npmjs.com/package/fdeops)
6
6
  [![CI](https://github.com/suboss87/fdeops/actions/workflows/validate.yml/badge.svg)](https://github.com/suboss87/fdeops/actions)
7
7
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
8
8
  [![Node](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](https://nodejs.org)
9
9
 
10
- Built for **Forward Deployed Engineers** - engineers embedded at a client, from first meeting to final handoff. Works the same for consultants, agency developers, solutions architects, and fractional CTOs.
10
+ The **second brain for Forward Deployed Engineers** - engineers embedded at a client, from first meeting to final handoff. Works the same for consultants, agency developers, solutions architects, and fractional CTOs.
11
+
12
+ ```
13
+ land discover plan build ship close
14
+ | | | | | |
15
+ +-----------+-----------+---------+----------+---------+
16
+ the fieldbook (.fde/) - one per engagement
17
+ written as a side effect of the work
18
+ ```
19
+
20
+ Describe your situation - `@fde` routes to the phase, runs the method, and every artifact lands in that shared memory. Nothing to maintain by hand.
11
21
 
12
22
  ---
13
23
 
14
24
  ## The problem
15
25
 
16
- Your AI coding agent's memory is scoped to a **repo**. Client work isn't: one engagement spans several repos, a dozen stakeholders, and decisions made in meetings your agent never saw. That context lives in rooms, chats, and hallway conversations - nothing writes it down where your tools can use it.
26
+ Your AI agent's memory is scoped to a **repo**. Client work isn't: one engagement spans several repos, a dozen stakeholders, and decisions made in meetings your agent never saw. That context lives in rooms, chats, and hallway conversations - nothing writes it down where your tools can use it.
17
27
 
18
28
  fdeops adds the missing layer: memory scoped to the **client** - plain markdown at `~/fde-engagements/<client>/.fde/`, written as a side effect of doing the work. Local only, zero dependencies, no network, no telemetry.
19
29
 
@@ -41,15 +51,15 @@ fdeops adds the missing layer: memory scoped to the **client** - plain markdown
41
51
  **2. Bind your client workspace** - run once, inside the workspace:
42
52
 
43
53
  ```bash
44
- fde resume --init acme
54
+ fde resume --init garvey
45
55
  ```
46
56
 
47
- fdeops' `--init` creates the engagement memory at `~/fde-engagements/acme/.fde/` (plain markdown, private to your machine) and binds this workspace to it. The hooks read that binding - context auto-loads at session start, auto-captures at session end. That is the whole setup.
57
+ fdeops' `--init` creates the engagement memory at `~/fde-engagements/garvey/.fde/` (plain markdown, private to your machine) and binds this workspace to it. The hooks read that binding - context auto-loads at session start, auto-captures at session end. That is the whole setup.
48
58
 
49
59
  **3. Work**
50
60
 
51
61
  ```text
52
- @fde I just got the brief. New client, payments platform, 3-week timeline.
62
+ @fde I just got the brief. New client, payments platform, they want it live before their Q3 audit.
53
63
  ```
54
64
 
55
65
  `@fde` is the one skill fdeops installs. Describe what's happening; it routes to the right field method and the memory writes itself. Full workflow: [docs/USAGE.md](docs/USAGE.md).
@@ -120,8 +130,8 @@ fde scan # day-1 recon + ASK ON DAY 1 questions (works
120
130
  fde resume # load this workspace's engagement
121
131
  fde resume --init <client> # THE setup step: create + bind an engagement
122
132
  fde debrief notes.md # route meeting notes into memory (also reads stdin)
123
- fde log decision "descope agreed with Dana"
124
- fde log contact "Diana gone quiet" --signal amber
133
+ fde log decision "descope agreed with Kowalczyk"
134
+ fde log contact "Denise gone quiet" --signal amber
125
135
  fde receipts <term> # dated search; no hit = a gap in the record, not proof of absence
126
136
  fde status # portfolio triage across all clients (red > amber > green)
127
137
  fde dashboard # render every engagement into one offline HTML fieldbook
@@ -131,7 +141,9 @@ The latest dated `[signal:...]` token per stakeholder drives the trust column in
131
141
 
132
142
  <p align="center"><img src="media/terminal-demo.svg" alt="fde CLI - status, scan, dashboard" width="720"/></p>
133
143
 
134
- <p align="center"><img width="794" height="571" alt="FieldBook" src="https://github.com/user-attachments/assets/349a223e-0c5e-4300-a8fe-9e3bb042cbbe" /></p>
144
+ `fde dashboard (FieldBook)` renders every engagement into one offline HTML fieldbook - engagements sorted by trust, next action and open risks per client, one glance to know where to start:
145
+
146
+ <p align="center"><img width="1336" height="624" alt="Screenshot 2026-07-08 at 12 45 07" src="https://github.com/user-attachments/assets/5683614c-7730-4a3a-860d-185053a377eb" /></p>
135
147
 
136
148
  ---
137
149
 
package/bin/check.js CHANGED
@@ -182,8 +182,8 @@ else ok('SECURITY.md')
182
182
 
183
183
  const exampleFiles = ['reality.md', 'decisions.md', 'delivery.md', 'stakeholders.md']
184
184
  for (const f of exampleFiles) {
185
- const p = path.join(root, 'examples', 'acme-payments', '.fde', f)
186
- if (!fs.existsSync(p)) fail(`examples/acme-payments/.fde/${f} missing`)
185
+ const p = path.join(root, 'examples', 'garvey-payments', '.fde', f)
186
+ if (!fs.existsSync(p)) fail(`examples/garvey-payments/.fde/${f} missing`)
187
187
  }
188
188
  ok('examples walkthrough files')
189
189