@reunionstudio/airlock-mcp 0.1.2 → 0.1.4
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/.agents/skills/airlock-mcp/SKILL.md +134 -14
- package/.agents/skills/airlock-mcp/agents/openai.yaml +2 -2
- package/README.md +93 -11
- package/docs/architecture.md +17 -6
- package/docs/install-surface.md +45 -5
- package/docs/spec-workbench-architecture.md +14 -3
- package/docs/spec-workspace.md +5 -0
- package/docs/workflows.md +127 -3
- package/package.json +1 -1
- package/patterns/manifest.json +6 -0
- package/patterns/okf-knowledge-bundle/README.md +64 -0
- package/patterns/okf-knowledge-bundle/sample.records.json +16 -0
- package/patterns/okf-knowledge-bundle/spec.config.json +64 -0
- package/setup.py +1 -1
- package/src/airlock_mcp/__init__.py +1 -1
- package/src/airlock_mcp/app_context.py +303 -0
- package/src/airlock_mcp/art.py +1 -1
- package/src/airlock_mcp/bootstrap.py +65 -4
- package/src/airlock_mcp/cli.py +32 -0
- package/src/airlock_mcp/summary.py +1 -0
- package/src/mcp.mjs +5 -5
- package/src/text.mjs +85 -16
- package/src/workbench.mjs +65 -2
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: airlock-mcp
|
|
3
|
-
description: Design, draft, review, and iterate Airlock specs in the Airlock MCP spec-building workbench. Use when Codex is helping a person choose a small starting spec, work through row grain and OODA-loop decisions, import reusable patterns such as posts or guest access setups, validate local draft files,
|
|
3
|
+
description: Design, draft, review, and iterate Airlock specs in the Airlock MCP spec-building workbench, or help build apps and workflows that use existing Airlock specs safely. Use when Codex is helping a person choose a small starting spec, work through row grain and OODA-loop decisions, import reusable patterns such as posts or guest access setups, validate local draft files, prepare an Airlock spec config before installed Airlock validation, or code an app that reads from and submits through existing specs.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Airlock MCP
|
|
6
|
+
# Airlock MCP
|
|
7
7
|
|
|
8
8
|
Use this skill to help a human develop Airlock specs over multiple sessions.
|
|
9
|
-
|
|
10
|
-
the
|
|
9
|
+
Also use it when a human wants to build an app or workflow that uses existing
|
|
10
|
+
Airlock specs. The specs repo is the durable workbench for spec drafts; an app
|
|
11
|
+
repo is the right place for code that reads, orients, decides, and submits
|
|
12
|
+
through existing specs. Codex is the conversational interface; the CLI is the
|
|
13
|
+
deterministic checker for local spec drafts.
|
|
11
14
|
|
|
12
15
|
## Default Path
|
|
13
16
|
|
|
@@ -16,6 +19,13 @@ the deterministic checker.
|
|
|
16
19
|
`sample.records.json`, and `review.md`.
|
|
17
20
|
2. If the current repo is not yet an Airlock MCP specs repo, run or suggest:
|
|
18
21
|
`airlock-mcp init-repo`.
|
|
22
|
+
Exception: if the user asks to build an app, dashboard, approval queue,
|
|
23
|
+
decision UI, agent workflow, or other code that uses existing specs, do not
|
|
24
|
+
bootstrap a specs repo just because the current repo lacks `workspaces/`.
|
|
25
|
+
Treat the current repo as an app repo unless the user asks to create specs.
|
|
26
|
+
Ask for the development mode, available specs, app goal, and read/write
|
|
27
|
+
contract instead. Use `airlock-mcp init-app-context` when the app repo needs
|
|
28
|
+
an `airlock/` folder with spec snapshots and an app manifest.
|
|
19
29
|
When helping create that repo from scratch, ask for the project or
|
|
20
30
|
organization name and suggest `<slug>-specs`; for example, `Home` becomes
|
|
21
31
|
`home-specs`. Reserve `airlock-specs` for the canonical reusable spec
|
|
@@ -35,7 +45,9 @@ the deterministic checker.
|
|
|
35
45
|
any workspace.
|
|
36
46
|
If the user opened the public `airlock-mcp` workbench repo as the entry
|
|
37
47
|
point, help them create a separate `<slug>-specs` project repo beside it.
|
|
38
|
-
3. If no workspace exists, welcome the user and ask:
|
|
48
|
+
3. If no workspace exists, welcome the user and ask which mode they want:
|
|
49
|
+
spec-first, app-first from existing specs, or co-development.
|
|
50
|
+
For spec-first or co-development, ask:
|
|
39
51
|
`What process do you want to improve?`
|
|
40
52
|
Explain that Airlock works best when we can identify the loop around that
|
|
41
53
|
process:
|
|
@@ -62,19 +74,28 @@ the deterministic checker.
|
|
|
62
74
|
4. Create `posts` only when the user chooses a feedback loop, asks for humans
|
|
63
75
|
and agents to provide feedback, or explicitly requests the posts pattern.
|
|
64
76
|
If the user is unsure, continue process discovery before creating files.
|
|
65
|
-
5.
|
|
77
|
+
5. Create `okf-knowledge-bundle` when the user needs governed Markdown
|
|
78
|
+
knowledge, accepted agent context, policies, runbooks, metric definitions,
|
|
79
|
+
investigations, or other business context organized as an OKF-style bundle.
|
|
80
|
+
The spec must declare `core_config.payload_adapter =
|
|
81
|
+
"okf_knowledge_bundle"`. Installed Airlock loads validated bundles with
|
|
82
|
+
`airlock.admin.load_okf_bundle(...)`, can sync parsed metadata with
|
|
83
|
+
`airlock.admin.sync_okf_bundle_metadata(...)`, and exposes authoritative
|
|
84
|
+
accepted context through `AIRLOCK_DATA.ACTIVE.V_OKF_CONCEPT_METADATA`.
|
|
85
|
+
Draft and rejected bundles are not authoritative agent context.
|
|
86
|
+
6. Use `airlock-mcp import-spec <json-file> <name>` when starting from a
|
|
66
87
|
spec-library file, an exported `SPEC_CONFIG`, or an existing canonical config.
|
|
67
88
|
If the source is from `airlock-specs`, treat it as a reusable draft pattern.
|
|
68
89
|
Check actual API docs, CSV/Excel/JSON samples, schemas, or other artifacts
|
|
69
90
|
before assuming the source fields match a live third-party system.
|
|
70
|
-
|
|
91
|
+
7. Use `airlock-mcp clone <source-workspace> <name>` when creating a related
|
|
71
92
|
draft from an existing workspace. Treat clone like the old Streamlit UI:
|
|
72
93
|
preserve the shape but deliberately reset spec identity.
|
|
73
|
-
|
|
94
|
+
8. Keep the draft small. Prefer one useful governed output over a large
|
|
74
95
|
speculative system, then keep a plan for later specs.
|
|
75
|
-
|
|
96
|
+
9. On later sessions, run `airlock-mcp list-workspaces` when the target draft
|
|
76
97
|
is not obvious.
|
|
77
|
-
|
|
98
|
+
10. Run `airlock-mcp summary <workspace>` and
|
|
78
99
|
`airlock-mcp next <workspace>` before editing so
|
|
79
100
|
the current shape, sample count, access model, and local check status are
|
|
80
101
|
visible.
|
|
@@ -82,14 +103,14 @@ the deterministic checker.
|
|
|
82
103
|
core, file rules, attachments, guest access, column rules, samples, notes,
|
|
83
104
|
and check status. Do not make the user infer the current spec from file
|
|
84
105
|
links alone.
|
|
85
|
-
|
|
106
|
+
11. Run `airlock-mcp check <workspace>` after changing draft config or sample
|
|
86
107
|
records.
|
|
87
|
-
|
|
108
|
+
12. Keep `sample.records.json` as the agent-friendly authoring shape. Use
|
|
88
109
|
`airlock-mcp export-csv <workspace>` when the same examples need to be
|
|
89
110
|
reviewed or loaded through Airlock's CSV path.
|
|
90
|
-
|
|
111
|
+
13. Use `airlock-mcp rename`, `archive`, and `restore` when organizing
|
|
91
112
|
workspaces so spec identity changes remain deliberate.
|
|
92
|
-
|
|
113
|
+
14. Use `airlock-mcp render-sql <workspace>` only as a validate-only review
|
|
93
114
|
artifact. Installed Airlock validation remains authoritative.
|
|
94
115
|
|
|
95
116
|
## Spec Design Questions
|
|
@@ -159,11 +180,110 @@ Use the observe-orient-decide-act loop as the product frame:
|
|
|
159
180
|
- Act: controlled writes back to interfaces, commitments, follow-ups, outputs,
|
|
160
181
|
and the next observations created by those actions.
|
|
161
182
|
|
|
183
|
+
## Apps And Workflows Using Existing Specs
|
|
184
|
+
|
|
185
|
+
Use this path when the user wants to vibe-code an app, dashboard, queue,
|
|
186
|
+
decision UI, analysis workflow, or agent workflow that uses specs they already
|
|
187
|
+
have access to. This is not spec editing by default.
|
|
188
|
+
|
|
189
|
+
Use three delivery modes:
|
|
190
|
+
|
|
191
|
+
- Spec-first: design governed specs, samples, access, and validation before
|
|
192
|
+
building the app surface.
|
|
193
|
+
- App-first: use existing specs to build an app, dashboard, queue, or workflow.
|
|
194
|
+
- Co-development: develop the app and specs together, keeping the contract and
|
|
195
|
+
experience visible side by side.
|
|
196
|
+
|
|
197
|
+
Start by identifying:
|
|
198
|
+
|
|
199
|
+
1. The app goal: what the user needs to orient around or decide.
|
|
200
|
+
2. Read specs: existing specs the app reads from, such as budgets, expenses,
|
|
201
|
+
requests, forecasts, observations, payouts, or reference data.
|
|
202
|
+
3. Write specs: existing specs the app submits to, such as decisions,
|
|
203
|
+
approvals, comments, commitments, actions, or follow-ups.
|
|
204
|
+
4. The app surface: Streamlit, web app, CLI, notebook, scheduled agent, or
|
|
205
|
+
other runtime.
|
|
206
|
+
5. The Airlock access path: installed Airlock procedures, approved MCP tools,
|
|
207
|
+
generated read surfaces, stages, or documented SQL helpers available in the
|
|
208
|
+
user's environment.
|
|
209
|
+
6. Identity, evidence, timestamps, approval, and separation-of-duties rules.
|
|
210
|
+
|
|
211
|
+
Use the current installed Airlock procedure grammar when the app talks to
|
|
212
|
+
Airlock:
|
|
213
|
+
|
|
214
|
+
- `airlock.observe.*` is read-only and is the first-class governance
|
|
215
|
+
observation surface for `app_admin` and `app_observer`.
|
|
216
|
+
- `airlock.admin.*` performs administrative changes and operational mutations.
|
|
217
|
+
- `airlock.agent.*` performs governed user or agent work in the actor's scope.
|
|
218
|
+
|
|
219
|
+
For app-first work, prefer `observe.procedures`, `observe.specs`,
|
|
220
|
+
`observe.spec`, `observe.governance_map`, `observe.explain_access`,
|
|
221
|
+
`observe.health`, `observe.activity`, `observe.admin_activity`,
|
|
222
|
+
`observe.spec_admin_activity`, `observe.billing`, `observe.billing_events`, and
|
|
223
|
+
the relevant context packets before inventing
|
|
224
|
+
custom read paths. Do not tell agents to call retired admin read wrappers such
|
|
225
|
+
as `admin.list_specs`, `admin.describe_role`, `admin.get_spec`, or
|
|
226
|
+
`admin.list_events`; use the matching observe list/detail procedure instead.
|
|
227
|
+
Use `admin.*` only when the app is intentionally changing Airlock setup or
|
|
228
|
+
running an admin operation.
|
|
229
|
+
|
|
230
|
+
Help the app follow the loop:
|
|
231
|
+
|
|
232
|
+
- Observe/read: fetch existing governed data through approved Airlock or
|
|
233
|
+
Snowflake surfaces.
|
|
234
|
+
- Orient: summarize, compare, rank, flag exceptions, propose options, or build
|
|
235
|
+
dashboards and queues.
|
|
236
|
+
- Decide: capture human or agent choices with rationale and evidence.
|
|
237
|
+
- Act/write: submit the decision, approval, action, or follow-up through an
|
|
238
|
+
Airlock spec contract.
|
|
239
|
+
|
|
240
|
+
Keep the boundary clear:
|
|
241
|
+
|
|
242
|
+
- Do not edit specs unless the user asks for spec changes.
|
|
243
|
+
- Do not write directly to Airlock-owned tables, stages, generated views, or
|
|
244
|
+
generated tables.
|
|
245
|
+
- Do not treat Snowflake as an unrestricted database just because the app can
|
|
246
|
+
connect to it.
|
|
247
|
+
- Prefer existing Airlock contracts for reads and writes. If no suitable write
|
|
248
|
+
spec exists, explain the gap and propose a small decision/action spec as a
|
|
249
|
+
separate spec-design step.
|
|
250
|
+
- Keep secrets and credentials out of repo files. Use the app's existing secret
|
|
251
|
+
management pattern.
|
|
252
|
+
|
|
253
|
+
### App Context Seeding
|
|
254
|
+
|
|
255
|
+
Use `airlock-mcp init-app-context` in an app repo when the app needs local
|
|
256
|
+
Airlock context. The command creates:
|
|
257
|
+
|
|
258
|
+
```text
|
|
259
|
+
airlock/
|
|
260
|
+
AGENTS.md
|
|
261
|
+
README.md
|
|
262
|
+
specs.manifest.json
|
|
263
|
+
spec-snapshots/
|
|
264
|
+
sample-records/
|
|
265
|
+
generated/
|
|
266
|
+
types/
|
|
267
|
+
sql/
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
The manifest and snapshots help the app develop against stable local references.
|
|
271
|
+
They are not canonical. Canonical specs live in the specs repo or installed
|
|
272
|
+
Airlock. When seeding from draft workspaces, pass `--spec <workspace>` for each
|
|
273
|
+
spec to copy `spec.config.json` and `sample.records.json` into the app context.
|
|
274
|
+
|
|
275
|
+
In co-development mode, keep two tracks visible:
|
|
276
|
+
|
|
277
|
+
- Spec track: row grain, columns, samples, access, validation, workflow.
|
|
278
|
+
- App track: screens, reads, decisions, writes, user actions, runtime.
|
|
279
|
+
|
|
162
280
|
## Pattern Guidance
|
|
163
281
|
|
|
164
282
|
Read only the relevant pattern files:
|
|
165
283
|
|
|
166
284
|
- `patterns/starter-posts/` when the user needs a first feedback loop.
|
|
285
|
+
- `patterns/okf-knowledge-bundle/` when the user needs governed Markdown
|
|
286
|
+
business context for people or agents.
|
|
167
287
|
- `patterns/guest-access/` when isolation or sharing is the hard part.
|
|
168
288
|
- `patterns/spec-types/` when choosing observation, commitment,
|
|
169
289
|
reconciliation, or reference/master-data shape.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "Airlock MCP"
|
|
3
|
-
short_description: "
|
|
4
|
-
default_prompt: "Use $airlock-mcp to ask
|
|
3
|
+
short_description: "Design specs or build apps that use Airlock specs."
|
|
4
|
+
default_prompt: "Use $airlock-mcp to ask whether I want to design specs, improve an OODA loop, or build an app/workflow that uses existing specs; then gather artifacts or available specs and help me move safely."
|
package/README.md
CHANGED
|
@@ -8,18 +8,47 @@ It covers the full Airlock loop:
|
|
|
8
8
|
- design specs with the bundled spec-building workbench
|
|
9
9
|
- map the process a person wants to improve into observe, orient, decide, and act
|
|
10
10
|
- use specs for governed data movement, decisions, actions, and feedback loops
|
|
11
|
+
- build apps and workflows that read from and submit through existing specs
|
|
11
12
|
- validate, create, and revise specs against installed Airlock
|
|
12
13
|
|
|
13
|
-
Spec building
|
|
14
|
-
Airlock MCP.
|
|
14
|
+
Spec building and spec-using app guidance are not second things users install.
|
|
15
|
+
They are bundled inside Airlock MCP.
|
|
15
16
|
|
|
16
|
-
Airlock MCP gives agents
|
|
17
|
+
Airlock MCP gives agents four kinds of Airlock help:
|
|
17
18
|
|
|
18
19
|
1. Spec design: draft, check, revise, import, clone, and prepare specs for
|
|
19
20
|
installed Airlock validation.
|
|
20
21
|
2. Airlock operating patterns: use specs to organize observations, orientation,
|
|
21
22
|
governed decisions, controlled actions, separation of duties, and feedback
|
|
22
23
|
loops.
|
|
24
|
+
3. App and workflow implementation: build dashboards, queues, decision UIs,
|
|
25
|
+
analyses, and agent workflows that use existing specs through Airlock
|
|
26
|
+
contracts.
|
|
27
|
+
4. Governance observation: use installed Airlock's read-only `observe.*`
|
|
28
|
+
procedures to inspect setup, access, activity, billing events, health,
|
|
29
|
+
context packets, and governance maps before deciding what an app or agent
|
|
30
|
+
should do.
|
|
31
|
+
|
|
32
|
+
## Installed Airlock Contract
|
|
33
|
+
|
|
34
|
+
Current Airlock separates procedure intent:
|
|
35
|
+
|
|
36
|
+
- `airlock.observe.*` is the read-only governance observation surface. It is
|
|
37
|
+
available to `app_admin` and `app_observer` and is the preferred path for
|
|
38
|
+
discovery, health checks, access explanation, governance maps, activity,
|
|
39
|
+
billing event context, and list/detail context packets.
|
|
40
|
+
- `airlock.admin.*` is for admin changes and operational actions such as
|
|
41
|
+
creating specs, changing roles, loading OKF bundles, rerunning setup, or
|
|
42
|
+
deleting purge candidates.
|
|
43
|
+
- `airlock.agent.*` is for governed agent work such as listing my
|
|
44
|
+
specs, validating/loading data, workflow actions, attachments, delegations,
|
|
45
|
+
and references.
|
|
46
|
+
|
|
47
|
+
When building an app or workflow, prefer `observe.*` for read-only setup and
|
|
48
|
+
monitoring questions, `agent.*` for governed submissions in the actor's scope,
|
|
49
|
+
and `admin.*` only for intentional administrative mutation. Do not use retired
|
|
50
|
+
admin read wrappers such as `admin.list_specs`, `admin.describe_role`, or
|
|
51
|
+
`admin.list_events`; use the matching observe procedures instead.
|
|
23
52
|
|
|
24
53
|
## Install
|
|
25
54
|
|
|
@@ -50,7 +79,8 @@ codex mcp add airlock -- npx -y github:reunionstudio/airlock-mcp server
|
|
|
50
79
|
|
|
51
80
|
The server exposes bootstrap guidance for starting a specs repo, coaching a
|
|
52
81
|
person through process discovery, and entering the bundled spec-building
|
|
53
|
-
workbench when a first spec is ready to draft.
|
|
82
|
+
workbench when a first spec is ready to draft. It also guides agents building
|
|
83
|
+
apps or workflows that use specs the user already has access to.
|
|
54
84
|
|
|
55
85
|
Workspace summaries are structured spec cards. They present the current spec
|
|
56
86
|
core, file rules, attachment policy, guest access, column rules, sample record
|
|
@@ -90,8 +120,11 @@ The server exposes orientation plus local spec-building tools:
|
|
|
90
120
|
- `airlock_start`: return setup guidance for a project.
|
|
91
121
|
- `airlock_doctor`: verify bundled workbench assets.
|
|
92
122
|
- `airlock_init_repo`: bootstrap a Git-backed specs repo.
|
|
123
|
+
- `airlock_init_app_context`: seed an app repo with spec snapshots, sample
|
|
124
|
+
records, generated helper folders, and an app manifest.
|
|
93
125
|
- `airlock_list_patterns` and `airlock_show_pattern`: inspect starter patterns.
|
|
94
|
-
- `airlock_init_workspace`: create a workspace from `blank` or
|
|
126
|
+
- `airlock_init_workspace`: create a workspace from `blank`, `posts`, or
|
|
127
|
+
`okf-knowledge-bundle`.
|
|
95
128
|
- `airlock_list_workspaces`: inspect active or archived drafts.
|
|
96
129
|
- `airlock_check_workspace`, `airlock_summary`, and `airlock_next`: validate and re-enter a draft.
|
|
97
130
|
- `airlock_export_csv`: render `sample.records.json` as Airlock-ready CSV.
|
|
@@ -127,13 +160,48 @@ The intended user flow is:
|
|
|
127
160
|
4. If Codex is creating the repo, choose where the `home-specs` directory should
|
|
128
161
|
live before files are written.
|
|
129
162
|
5. Ask Codex to use Airlock MCP to help improve a process with Airlock specs.
|
|
130
|
-
6.
|
|
131
|
-
|
|
163
|
+
6. Choose a delivery mode: spec-first, app-first from existing specs, or
|
|
164
|
+
co-development of specs and app together.
|
|
165
|
+
7. Let Airlock MCP bootstrap the project, ask what process the user wants to
|
|
166
|
+
improve when specs are involved, and propose a small first spec plus a plan
|
|
167
|
+
for more.
|
|
168
|
+
|
|
169
|
+
The first workspace should not be created automatically. Airlock MCP should
|
|
170
|
+
first ask whether the user wants spec-first, app-first from existing specs, or
|
|
171
|
+
co-development of specs and app together. For spec-building work, it should ask
|
|
172
|
+
for the messy process, identify where information comes in and actions go out,
|
|
173
|
+
then choose a small observation, orient, decision, or action spec.
|
|
174
|
+
|
|
175
|
+
For app-building work, Airlock MCP should identify the app goal, read specs,
|
|
176
|
+
write specs, orienting views, decision capture, and approved Airlock/Snowflake
|
|
177
|
+
access paths. The app should submit decisions, approvals, actions, comments, or
|
|
178
|
+
follow-ups through Airlock spec contracts. It should not write directly to
|
|
179
|
+
Airlock-owned tables or bypass spec workflow.
|
|
180
|
+
|
|
181
|
+
When an app repo needs local Airlock context, use:
|
|
132
182
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
183
|
+
```bash
|
|
184
|
+
airlock-mcp init-app-context . --mode app-first --spec ../home-specs/workspaces/expenses
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
That creates:
|
|
188
|
+
|
|
189
|
+
```text
|
|
190
|
+
airlock/
|
|
191
|
+
AGENTS.md
|
|
192
|
+
README.md
|
|
193
|
+
specs.manifest.json
|
|
194
|
+
spec-snapshots/
|
|
195
|
+
sample-records/
|
|
196
|
+
generated/
|
|
197
|
+
types/
|
|
198
|
+
sql/
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
The snapshots are for coding, tests, and UI planning. They are not canonical.
|
|
202
|
+
Canonical specs live in the specs repo or installed Airlock. In
|
|
203
|
+
co-development, keep a visible spec track and app track so changes to row
|
|
204
|
+
grain, access, workflow, screens, reads, and governed writes stay aligned.
|
|
137
205
|
|
|
138
206
|
When the user already has artifacts, Airlock MCP should ask for them early:
|
|
139
207
|
CSV or Excel files, JSON samples, API docs, schemas, forms, screenshots, PDFs,
|
|
@@ -146,3 +214,17 @@ points, patterns, and ideas. Those library specs are not guaranteed to reflect
|
|
|
146
214
|
the current shape of any third-party system. Current API docs, real exports,
|
|
147
215
|
samples, schemas, and user-provided artifacts should override library shapes
|
|
148
216
|
when they conflict.
|
|
217
|
+
|
|
218
|
+
For app-first work against installed Airlock, start with `observe.procedures`,
|
|
219
|
+
`observe.specs`, `observe.spec`, `observe.governance_map`,
|
|
220
|
+
`observe.explain_access`, `observe.health`, and the relevant context packet
|
|
221
|
+
before designing direct SQL helpers. These payloads are intended to be useful
|
|
222
|
+
to agents as well as humans.
|
|
223
|
+
|
|
224
|
+
For governed Markdown knowledge, use the `okf-knowledge-bundle` pattern. It
|
|
225
|
+
sets `core_config.payload_adapter` to `okf_knowledge_bundle` so installed
|
|
226
|
+
Airlock can load locally validated bundles through
|
|
227
|
+
`airlock.admin.load_okf_bundle(...)`, sync parsed metadata through
|
|
228
|
+
`airlock.admin.sync_okf_bundle_metadata(...)`, and expose accepted concept
|
|
229
|
+
metadata from `AIRLOCK_DATA.ACTIVE.V_OKF_CONCEPT_METADATA`. Draft and rejected
|
|
230
|
+
bundles are not authoritative agent context.
|
package/docs/architecture.md
CHANGED
|
@@ -30,8 +30,9 @@ The spec-building workbench lives in this repo under `src/airlock_mcp`,
|
|
|
30
30
|
`patterns`, `workspaces`, `schemas`, and `.agents/skills/airlock-mcp`.
|
|
31
31
|
Airlock operating patterns live in the same MCP experience: real use cases,
|
|
32
32
|
controlled interface ingestion, OODA loops, governed decisions, separation of
|
|
33
|
-
duties, controlled actions, output review,
|
|
34
|
-
a second install or separate
|
|
33
|
+
duties, controlled actions, output review, improvement capture, and app/workflow
|
|
34
|
+
implementation against existing specs. This is not a second install or separate
|
|
35
|
+
product surface.
|
|
35
36
|
|
|
36
37
|
## MCP Surface
|
|
37
38
|
|
|
@@ -41,14 +42,24 @@ The bootstrap server exposes:
|
|
|
41
42
|
- resource: `airlock://getting-started`
|
|
42
43
|
- orientation tool: `airlock_start`
|
|
43
44
|
- workbench tools: `airlock_doctor`, `airlock_init_repo`,
|
|
44
|
-
`
|
|
45
|
-
`
|
|
46
|
-
`
|
|
45
|
+
`airlock_init_app_context`, `airlock_list_patterns`,
|
|
46
|
+
`airlock_show_pattern`, `airlock_init_workspace`, `airlock_list_workspaces`,
|
|
47
|
+
`airlock_check_workspace`, `airlock_summary`, `airlock_next`,
|
|
48
|
+
`airlock_export_csv`, and `airlock_render_sql`
|
|
47
49
|
|
|
48
50
|
These give the agent enough context to start a Git-backed `<project>-specs`
|
|
49
51
|
repo in a user-chosen location, ask what process the user wants to improve,
|
|
50
52
|
enter the spec-building workbench when a first spec is ready to draft, and
|
|
51
|
-
avoid creating a first workspace until the user chooses a path.
|
|
53
|
+
avoid creating a first workspace until the user chooses a path. They also give
|
|
54
|
+
the agent enough product guidance to work in an app repo when the user wants to
|
|
55
|
+
build software that reads from existing specs and submits governed decisions or
|
|
56
|
+
actions through Airlock contracts.
|
|
57
|
+
|
|
58
|
+
`airlock_init_app_context` is the bridge for app-first and co-development work.
|
|
59
|
+
It creates an app-local `airlock/` folder with spec snapshots, sample records,
|
|
60
|
+
generated helper placeholders, and `specs.manifest.json`. Those files support
|
|
61
|
+
coding, tests, and UI planning, but they are not canonical. Canonical specs
|
|
62
|
+
remain in the specs repo or installed Airlock.
|
|
52
63
|
|
|
53
64
|
Workbench tools call the bundled Python package with argument arrays and a
|
|
54
65
|
controlled `PYTHONPATH`. They do not expose update commands over MCP. Tool
|
package/docs/install-surface.md
CHANGED
|
@@ -16,12 +16,21 @@ Then the user opens Codex, creates or opens a Git-backed `<project>-specs`
|
|
|
16
16
|
repo, and starts chatting with Airlock. GitHub is the recommended default when
|
|
17
17
|
available. If Codex is creating the repo, it should ask where the directory
|
|
18
18
|
should live before writing files. Airlock MCP should start by asking what
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
delivery mode the user wants: spec-first, app-first from existing specs, or
|
|
20
|
+
co-development of specs and app together. Then it should help design specs and
|
|
21
|
+
operating patterns around observe, orient, decide, and act, or help code an app
|
|
22
|
+
that reads and submits through Airlock contracts.
|
|
21
23
|
|
|
22
24
|
The install command is not the spec workspace. It is the connector/setup entry
|
|
23
25
|
point. The specs repo is still the durable memory.
|
|
24
26
|
|
|
27
|
+
For installed Airlock access, teach the current procedure split:
|
|
28
|
+
`airlock.observe.*` is the read-only governance observation surface,
|
|
29
|
+
`airlock.agent.*` is governed agent work, and `airlock.admin.*` is
|
|
30
|
+
administrative mutation. App-first and audit-style workflows should use
|
|
31
|
+
observe payloads for discovery, context, health, access explanation, activity,
|
|
32
|
+
billing events, and governance maps before considering custom SQL helpers.
|
|
33
|
+
|
|
25
34
|
The connector package and MCP server live in `reunionstudio/airlock-mcp`.
|
|
26
35
|
This workbench provides the spec-building implementation inside that one
|
|
27
36
|
installed Airlock MCP experience.
|
|
@@ -116,6 +125,37 @@ The first release should optimize the user journey:
|
|
|
116
125
|
forms, screenshots, PDFs, exports, or message examples
|
|
117
126
|
6. use `airlock-specs` library patterns as starting points when useful, while
|
|
118
127
|
preferring current artifacts over library shapes when they conflict
|
|
119
|
-
7.
|
|
120
|
-
|
|
121
|
-
|
|
128
|
+
7. use the `okf-knowledge-bundle` pattern when the useful artifact is governed
|
|
129
|
+
Markdown knowledge for accepted agent context
|
|
130
|
+
8. map where information comes in and actions go out
|
|
131
|
+
9. create the first workspace only after the user chooses a small first spec
|
|
132
|
+
10. keep a plan for later specs that improve the full loop
|
|
133
|
+
|
|
134
|
+
For users who already have specs and want to build software, optimize a second
|
|
135
|
+
journey:
|
|
136
|
+
|
|
137
|
+
1. install connector
|
|
138
|
+
2. open the app repo in Codex
|
|
139
|
+
3. ask for the app goal and available specs
|
|
140
|
+
4. identify read specs and write specs
|
|
141
|
+
5. seed app-local Airlock context with `airlock-mcp init-app-context` when the
|
|
142
|
+
app needs spec snapshots, samples, generated helpers, and a manifest
|
|
143
|
+
6. inspect installed setup with read-only `observe.*` procedures when available
|
|
144
|
+
7. build orienting views, dashboards, queues, proposals, or recommendations
|
|
145
|
+
8. capture decisions, approvals, actions, comments, or follow-ups through
|
|
146
|
+
Airlock spec contracts
|
|
147
|
+
9. avoid direct writes to Airlock-owned tables and avoid bypassing spec workflow
|
|
148
|
+
|
|
149
|
+
For users who are developing the app and specs together, optimize a third
|
|
150
|
+
journey:
|
|
151
|
+
|
|
152
|
+
1. open the app repo or specs repo in Codex
|
|
153
|
+
2. choose co-development explicitly
|
|
154
|
+
3. keep a spec track for row grain, columns, access, samples, validation, and
|
|
155
|
+
workflow
|
|
156
|
+
4. keep an app track for screens, reads, orienting summaries, decision capture,
|
|
157
|
+
governed writes, runtime, and tests
|
|
158
|
+
5. seed the app repo with `airlock/` snapshots and a manifest when the app needs
|
|
159
|
+
local contract context
|
|
160
|
+
6. treat app snapshots as development references while canonical specs remain
|
|
161
|
+
in the specs repo or installed Airlock
|
|
@@ -14,6 +14,8 @@ Airlock MCP is intentionally small:
|
|
|
14
14
|
- `art.py`: small terminal identity and about text.
|
|
15
15
|
- `bootstrap.py`: specs-repo bootstrap files, including `AGENTS.md` and the
|
|
16
16
|
repo-scoped Codex skill.
|
|
17
|
+
- `app_context.py`: app-repo Airlock context seeding for spec snapshots,
|
|
18
|
+
sample records, generated helper placeholders, and `specs.manifest.json`.
|
|
17
19
|
- `manage.py`: workspace discovery, archive, restore, rename, and next-action
|
|
18
20
|
helpers.
|
|
19
21
|
- `project.py`: checkout discovery and environment override handling.
|
|
@@ -55,6 +57,8 @@ The old Airlock Streamlit editor used mode-specific hydration:
|
|
|
55
57
|
Airlock MCP maps that to files:
|
|
56
58
|
|
|
57
59
|
- `init-repo`: prepare a separate specs repo for Codex and Airlock MCP
|
|
60
|
+
- `init-app-context`: prepare an app repo `airlock/` folder for app-first or
|
|
61
|
+
co-development work against existing specs
|
|
58
62
|
- `init`: create from a pattern
|
|
59
63
|
- `import-spec`: edit/import an existing canonical or spec-library config in a
|
|
60
64
|
new workspace
|
|
@@ -68,6 +72,12 @@ Airlock MCP maps that to files:
|
|
|
68
72
|
This repo does not try to be the installed Airlock editor. It gives Codex and
|
|
69
73
|
humans a careful drafting surface before Airlock receives the final config.
|
|
70
74
|
|
|
75
|
+
`init-app-context` does not make app-local snapshots canonical. It gives an app
|
|
76
|
+
repo stable development references for coding, tests, UI planning, and generated
|
|
77
|
+
helpers. Canonical specs remain in the specs repo or installed Airlock. Use
|
|
78
|
+
`--force` to refresh snapshots from canonical workspace files after the spec
|
|
79
|
+
changes.
|
|
80
|
+
|
|
71
81
|
## Update Boundary
|
|
72
82
|
|
|
73
83
|
`self-update` supports two intentionally simple paths:
|
|
@@ -119,9 +129,10 @@ npx @reunionstudio/airlock-mcp install
|
|
|
119
129
|
|
|
120
130
|
The connector implementation belongs in `reunionstudio/airlock-mcp`. Airlock
|
|
121
131
|
MCP is the single installed interface for agents working with Airlock: building
|
|
122
|
-
specs, using specs to pull and push governed data,
|
|
123
|
-
from real use cases. This
|
|
124
|
-
|
|
132
|
+
specs, using specs to pull and push governed data, building apps or workflows
|
|
133
|
+
that use existing specs, and capturing improvements from real use cases. This
|
|
134
|
+
workbench owns the spec-building implementation: patterns, bootstrap, workspace
|
|
135
|
+
files, local checks, and the Codex skill.
|
|
125
136
|
|
|
126
137
|
That command is the agent connector/setup entry point, not the user's spec
|
|
127
138
|
workspace. After installing or registering the connector, the user still creates
|
package/docs/spec-workspace.md
CHANGED
|
@@ -22,6 +22,11 @@ Use `airlock-mcp rename`, `archive`, and `restore` to organize draft folders.
|
|
|
22
22
|
`rename` retitles spec identity by default; pass `--keep-spec-identity` for a
|
|
23
23
|
pure folder move.
|
|
24
24
|
|
|
25
|
+
For `okf-knowledge-bundle` workspaces, `sample.records.json` is only a small
|
|
26
|
+
metadata sample for the draft spec. The governed payload is a locally validated
|
|
27
|
+
Markdown directory or `.zip` bundle loaded through installed Airlock's
|
|
28
|
+
`airlock.admin.load_okf_bundle(...)` path.
|
|
29
|
+
|
|
25
30
|
`review.md` should identify the workspace source mode:
|
|
26
31
|
|
|
27
32
|
- `create`: started from an Airlock MCP pattern
|