@codyswann/lisa 2.23.2 → 2.25.0

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.
Files changed (150) hide show
  1. package/.claude-plugin/marketplace.json +6 -0
  2. package/package.json +1 -1
  3. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  4. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  5. package/plugins/lisa/commands/setup/github.md +7 -0
  6. package/plugins/lisa/commands/setup/linear.md +7 -0
  7. package/plugins/lisa/skills/setup-github/SKILL.md +199 -0
  8. package/plugins/lisa/skills/setup-linear/SKILL.md +217 -0
  9. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  10. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  11. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  12. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  13. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  14. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  15. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  16. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  17. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  18. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  19. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  20. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  21. package/plugins/lisa-wiki/.claude-plugin/plugin.json +8 -0
  22. package/plugins/lisa-wiki/.codex-plugin/plugin.json +32 -0
  23. package/plugins/lisa-wiki/ci/lisa-wiki-validate.yml +32 -0
  24. package/plugins/lisa-wiki/commands/add-ingest.md +6 -0
  25. package/plugins/lisa-wiki/commands/add-role.md +6 -0
  26. package/plugins/lisa-wiki/commands/doctor.md +6 -0
  27. package/plugins/lisa-wiki/commands/ingest.md +6 -0
  28. package/plugins/lisa-wiki/commands/lint.md +6 -0
  29. package/plugins/lisa-wiki/commands/migrate.md +6 -0
  30. package/plugins/lisa-wiki/commands/onboard-me.md +6 -0
  31. package/plugins/lisa-wiki/commands/query.md +6 -0
  32. package/plugins/lisa-wiki/commands/setup.md +6 -0
  33. package/plugins/lisa-wiki/schema/lisa-wiki-config.schema.json +118 -0
  34. package/plugins/lisa-wiki/schema/wiki-structure.schema.json +51 -0
  35. package/plugins/lisa-wiki/scripts/_wiki-lib.mjs +185 -0
  36. package/plugins/lisa-wiki/scripts/diff-guard.mjs +116 -0
  37. package/plugins/lisa-wiki/scripts/ingest-git.mjs +189 -0
  38. package/plugins/lisa-wiki/scripts/ingest-memory.mjs +130 -0
  39. package/plugins/lisa-wiki/scripts/ingest-roles.mjs +85 -0
  40. package/plugins/lisa-wiki/scripts/ingest_slack_channel.py +329 -0
  41. package/plugins/lisa-wiki/scripts/lint-wiki.mjs +320 -0
  42. package/plugins/lisa-wiki/scripts/mcp-doctor.mjs +72 -0
  43. package/plugins/lisa-wiki/scripts/render-contract.mjs +107 -0
  44. package/plugins/lisa-wiki/scripts/rewrite-refs.mjs +144 -0
  45. package/plugins/lisa-wiki/scripts/slack_oauth_user.py +179 -0
  46. package/plugins/lisa-wiki/scripts/validate-config.mjs +232 -0
  47. package/plugins/lisa-wiki/scripts/verify-migration.mjs +199 -0
  48. package/plugins/lisa-wiki/skills/lisa-wiki-add-ingest/SKILL.md +34 -0
  49. package/plugins/lisa-wiki/skills/lisa-wiki-add-role/SKILL.md +30 -0
  50. package/plugins/lisa-wiki/skills/lisa-wiki-connector-confluence/SKILL.md +25 -0
  51. package/plugins/lisa-wiki/skills/lisa-wiki-connector-docs/SKILL.md +30 -0
  52. package/plugins/lisa-wiki/skills/lisa-wiki-connector-git/SKILL.md +25 -0
  53. package/plugins/lisa-wiki/skills/lisa-wiki-connector-jira/SKILL.md +28 -0
  54. package/plugins/lisa-wiki/skills/lisa-wiki-connector-memory/SKILL.md +28 -0
  55. package/plugins/lisa-wiki/skills/lisa-wiki-connector-notion/SKILL.md +25 -0
  56. package/plugins/lisa-wiki/skills/lisa-wiki-connector-roles/SKILL.md +22 -0
  57. package/plugins/lisa-wiki/skills/lisa-wiki-connector-slack/SKILL.md +30 -0
  58. package/plugins/lisa-wiki/skills/lisa-wiki-connector-web/SKILL.md +23 -0
  59. package/plugins/lisa-wiki/skills/lisa-wiki-doctor/SKILL.md +47 -0
  60. package/plugins/lisa-wiki/skills/lisa-wiki-ingest/SKILL.md +43 -0
  61. package/plugins/lisa-wiki/skills/lisa-wiki-lint/SKILL.md +32 -0
  62. package/plugins/lisa-wiki/skills/lisa-wiki-migrate/SKILL.md +43 -0
  63. package/plugins/lisa-wiki/skills/lisa-wiki-onboard-me/SKILL.md +33 -0
  64. package/plugins/lisa-wiki/skills/lisa-wiki-query/SKILL.md +30 -0
  65. package/plugins/lisa-wiki/skills/lisa-wiki-setup/SKILL.md +45 -0
  66. package/plugins/lisa-wiki/skills/lisa-wiki-usage/SKILL.md +50 -0
  67. package/plugins/lisa-wiki/templates/agents/role-agent.claude.md +16 -0
  68. package/plugins/lisa-wiki/templates/agents/role-agent.codex.toml +15 -0
  69. package/plugins/lisa-wiki/templates/index.md +17 -0
  70. package/plugins/lisa-wiki/templates/llm-wiki-contract.md +60 -0
  71. package/plugins/lisa-wiki/templates/log.md +8 -0
  72. package/plugins/lisa-wiki/templates/page-types/architecture.md +18 -0
  73. package/plugins/lisa-wiki/templates/page-types/concept.md +18 -0
  74. package/plugins/lisa-wiki/templates/page-types/decision.md +18 -0
  75. package/plugins/lisa-wiki/templates/page-types/entity.md +19 -0
  76. package/plugins/lisa-wiki/templates/page-types/open-question.md +18 -0
  77. package/plugins/lisa-wiki/templates/page-types/playbook.md +18 -0
  78. package/plugins/lisa-wiki/templates/page-types/project.md +19 -0
  79. package/plugins/lisa-wiki/templates/page-types/requirement.md +19 -0
  80. package/plugins/lisa-wiki/templates/page-types/staff.md +26 -0
  81. package/plugins/lisa-wiki/templates/start-here.md +24 -0
  82. package/plugins/lisa-wiki/templates/state-readme.md +20 -0
  83. package/plugins/src/base/commands/setup/github.md +7 -0
  84. package/plugins/src/base/commands/setup/linear.md +7 -0
  85. package/plugins/src/base/skills/setup-github/SKILL.md +199 -0
  86. package/plugins/src/base/skills/setup-linear/SKILL.md +217 -0
  87. package/plugins/src/wiki/.claude-plugin/plugin.json +6 -0
  88. package/plugins/src/wiki/ci/lisa-wiki-validate.yml +32 -0
  89. package/plugins/src/wiki/commands/add-ingest.md +6 -0
  90. package/plugins/src/wiki/commands/add-role.md +6 -0
  91. package/plugins/src/wiki/commands/doctor.md +6 -0
  92. package/plugins/src/wiki/commands/ingest.md +6 -0
  93. package/plugins/src/wiki/commands/lint.md +6 -0
  94. package/plugins/src/wiki/commands/migrate.md +6 -0
  95. package/plugins/src/wiki/commands/onboard-me.md +6 -0
  96. package/plugins/src/wiki/commands/query.md +6 -0
  97. package/plugins/src/wiki/commands/setup.md +6 -0
  98. package/plugins/src/wiki/schema/lisa-wiki-config.schema.json +118 -0
  99. package/plugins/src/wiki/schema/wiki-structure.schema.json +51 -0
  100. package/plugins/src/wiki/scripts/_wiki-lib.mjs +185 -0
  101. package/plugins/src/wiki/scripts/diff-guard.mjs +116 -0
  102. package/plugins/src/wiki/scripts/ingest-git.mjs +189 -0
  103. package/plugins/src/wiki/scripts/ingest-memory.mjs +130 -0
  104. package/plugins/src/wiki/scripts/ingest-roles.mjs +85 -0
  105. package/plugins/src/wiki/scripts/ingest_slack_channel.py +329 -0
  106. package/plugins/src/wiki/scripts/lint-wiki.mjs +320 -0
  107. package/plugins/src/wiki/scripts/mcp-doctor.mjs +72 -0
  108. package/plugins/src/wiki/scripts/render-contract.mjs +107 -0
  109. package/plugins/src/wiki/scripts/rewrite-refs.mjs +144 -0
  110. package/plugins/src/wiki/scripts/slack_oauth_user.py +179 -0
  111. package/plugins/src/wiki/scripts/validate-config.mjs +232 -0
  112. package/plugins/src/wiki/scripts/verify-migration.mjs +199 -0
  113. package/plugins/src/wiki/skills/lisa-wiki-add-ingest/SKILL.md +34 -0
  114. package/plugins/src/wiki/skills/lisa-wiki-add-role/SKILL.md +30 -0
  115. package/plugins/src/wiki/skills/lisa-wiki-connector-confluence/SKILL.md +25 -0
  116. package/plugins/src/wiki/skills/lisa-wiki-connector-docs/SKILL.md +30 -0
  117. package/plugins/src/wiki/skills/lisa-wiki-connector-git/SKILL.md +25 -0
  118. package/plugins/src/wiki/skills/lisa-wiki-connector-jira/SKILL.md +28 -0
  119. package/plugins/src/wiki/skills/lisa-wiki-connector-memory/SKILL.md +28 -0
  120. package/plugins/src/wiki/skills/lisa-wiki-connector-notion/SKILL.md +25 -0
  121. package/plugins/src/wiki/skills/lisa-wiki-connector-roles/SKILL.md +22 -0
  122. package/plugins/src/wiki/skills/lisa-wiki-connector-slack/SKILL.md +30 -0
  123. package/plugins/src/wiki/skills/lisa-wiki-connector-web/SKILL.md +23 -0
  124. package/plugins/src/wiki/skills/lisa-wiki-doctor/SKILL.md +47 -0
  125. package/plugins/src/wiki/skills/lisa-wiki-ingest/SKILL.md +43 -0
  126. package/plugins/src/wiki/skills/lisa-wiki-lint/SKILL.md +32 -0
  127. package/plugins/src/wiki/skills/lisa-wiki-migrate/SKILL.md +43 -0
  128. package/plugins/src/wiki/skills/lisa-wiki-onboard-me/SKILL.md +33 -0
  129. package/plugins/src/wiki/skills/lisa-wiki-query/SKILL.md +30 -0
  130. package/plugins/src/wiki/skills/lisa-wiki-setup/SKILL.md +45 -0
  131. package/plugins/src/wiki/skills/lisa-wiki-usage/SKILL.md +50 -0
  132. package/plugins/src/wiki/templates/agents/role-agent.claude.md +16 -0
  133. package/plugins/src/wiki/templates/agents/role-agent.codex.toml +15 -0
  134. package/plugins/src/wiki/templates/index.md +17 -0
  135. package/plugins/src/wiki/templates/llm-wiki-contract.md +60 -0
  136. package/plugins/src/wiki/templates/log.md +8 -0
  137. package/plugins/src/wiki/templates/page-types/architecture.md +18 -0
  138. package/plugins/src/wiki/templates/page-types/concept.md +18 -0
  139. package/plugins/src/wiki/templates/page-types/decision.md +18 -0
  140. package/plugins/src/wiki/templates/page-types/entity.md +19 -0
  141. package/plugins/src/wiki/templates/page-types/open-question.md +18 -0
  142. package/plugins/src/wiki/templates/page-types/playbook.md +18 -0
  143. package/plugins/src/wiki/templates/page-types/project.md +19 -0
  144. package/plugins/src/wiki/templates/page-types/requirement.md +19 -0
  145. package/plugins/src/wiki/templates/page-types/staff.md +26 -0
  146. package/plugins/src/wiki/templates/start-here.md +24 -0
  147. package/plugins/src/wiki/templates/state-readme.md +20 -0
  148. package/scripts/build-plugins.sh +29 -21
  149. package/scripts/check-plugins-sync.sh +1 -1
  150. package/scripts/generate-codex-plugin-artifacts.mjs +22 -0
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: lisa-wiki-connector-roles
3
+ description: Ingest the wiki's own digital-staff roster (config.staff[] + wiki/staff/*) into a sanitized source note. Use only when lisa-wiki-ingest routes to the roles connector. Does not run any subagent.
4
+ ---
5
+
6
+ # lisa-wiki-connector-roles
7
+
8
+ A universal, deterministic connector backed by `scripts/ingest-roles.mjs`. It captures the roster so
9
+ the wiki documents its own digital staff.
10
+
11
+ ## Flow
12
+ ```
13
+ node "${PLUGIN_ROOT}/scripts/ingest-roles.mjs" --config wiki/lisa-wiki.config.json \
14
+ --wiki wiki --source-dir wiki/sources/roles \
15
+ --state wiki/state/roles/roles.json --emit-meta wiki/state/handoff/roles-<runId>.json
16
+ ```
17
+ Hand the source note + proposed cursor back to `lisa-wiki-ingest`.
18
+
19
+ ## Rules
20
+ - Reads `config.staff[]` and `wiki/staff/*.md` only; never invokes/schedules the role subagents
21
+ (that is out of scope — see lisa-wiki-add-role).
22
+ - Writes only its source note + handoff meta; the kernel advances state.
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: lisa-wiki-connector-slack
3
+ description: Ingest a Slack channel into sanitized source notes via a user token. Use only when lisa-wiki-ingest routes to the slack connector AND the run carries explicit external-write intent (Slack OAuth opens a browser and stores a token file). Centralized stdlib-Python scripts; secrets are redacted.
4
+ ---
5
+
6
+ # lisa-wiki-connector-slack
7
+
8
+ The centralized Slack connector backed by `scripts/slack_oauth_user.py` (one-time OAuth) and
9
+ `scripts/ingest_slack_channel.py` (ingest). These are the stdlib-Python scripts previously duplicated
10
+ verbatim across projects, now shipped once by the plugin.
11
+
12
+ ## Side effects — `external-write`
13
+ Slack OAuth opens a browser and writes a user-token file to a local secrets path. The slack connector
14
+ is therefore `external-write`: it runs ONLY with config opt-in **and** explicit per-run intent, is
15
+ skipped during an unattended full ingest, and its PR never auto-merges.
16
+
17
+ ## Flow
18
+ 1. One-time auth (explicit): `python3 "${PLUGIN_ROOT}/scripts/slack_oauth_user.py"` — stores a
19
+ `xoxp-` user token under an ignored secrets path. The token file is never committed.
20
+ 2. Ingest: `python3 "${PLUGIN_ROOT}/scripts/ingest_slack_channel.py" --channel <id-or-name> \
21
+ --config wiki/lisa-wiki.config.json --emit-meta wiki/state/handoff/slack-<runId>.json` — verifies
22
+ the Slack tenant against config, then writes sanitized source notes under `wiki/sources/slack/`
23
+ (tokens/keys redacted) and emits a **proposed** cursor to the handoff file.
24
+ 3. Hand the source notes + handoff meta back to `lisa-wiki-ingest` (the kernel advances final state
25
+ after verification).
26
+
27
+ ## Rules
28
+ - Verify the Slack team/tenant matches config before ingesting.
29
+ - Token/OAuth artifacts stay in `.gitignore` and are never committed.
30
+ - Writes only Slack source notes; the kernel performs synthesis/index/log/verify/PR.
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: lisa-wiki-connector-web
3
+ description: Ingest a public URL into a sanitized source note for lisa-wiki ingest (via WebFetch). Use only when lisa-wiki-ingest routes to the web connector (a URL input). Read-only.
4
+ ---
5
+
6
+ # lisa-wiki-connector-web
7
+
8
+ Skill-driven connector. Fetches a public URL (WebFetch / equivalent), reduces it to a reader-safe
9
+ source note, and hands off; the kernel does synthesis/index/log/verify/state/PR.
10
+
11
+ ## Flow
12
+ 1. Confirm `connectors.web.enabled` and `sideEffects: read-only-ingest`.
13
+ 2. Fetch the URL read-only (WebFetch). Do not follow suspicious cross-host redirects without care.
14
+ 3. Write a source note under `wiki/sources/web/<YYYY-MM-DD>-<slug>.md` with frontmatter
15
+ (`type: source`, dates, `source_system: web`, the URL) and a faithful, reader-safe summary +
16
+ key excerpts. Redact secrets; honor `sourceRetention` (e.g. `external-pointer-only` keeps just the
17
+ URL + minimal note).
18
+ 4. Emit run metadata (the source-note path) to the handoff file; return to `lisa-wiki-ingest`.
19
+
20
+ ## Rules
21
+ - Read-only; never submit forms or trigger actions on the page.
22
+ - Do not invent content not present on the page; weak/uncertain material → open-questions.
23
+ - Writes only the source note + handoff meta; the kernel advances state.
@@ -0,0 +1,47 @@
1
+ ---
2
+ name: lisa-wiki-doctor
3
+ description: Verify that a wiki is correctly set up and (after migration) fully functional. Runs the deterministic checks plus functional smoke tests, writes a doctor report, and returns an overall verdict. Use as the final gate of /migrate, after /setup, or anytime to confirm wiki health. A repo is not "migrated" until its doctor verdict is READY.
4
+ ---
5
+
6
+ # lisa-wiki-doctor
7
+
8
+ The post-migration / post-setup verification checklist. Orchestrates the deterministic scripts and
9
+ functional smoke tests, then writes `wiki/state/migration/doctor-report.json` and prints the blocking
10
+ items.
11
+
12
+ ## Verdict
13
+ Each item is `PASS | WARN | FAIL | SKIP`; overall is `READY | READY_WITH_WARNINGS | NOT_READY`. In
14
+ hard-enforcement mode (`--migration` after phase 5) `WARN` on structure/integrity items is not
15
+ allowed; earlier phases allow documented legacy warnings. Build checks (group G) are Lisa/release-only
16
+ and `SKIP` in downstream repos.
17
+
18
+ ## Checklist
19
+ - **A. Structure & config** (deterministic): `validate-config.mjs` + structure-manifest conformance;
20
+ required files present; `schemaVersion` set and rendered `kernelVersion` matches the installed
21
+ plugin; README mode recorded (never implicit `stub`).
22
+ - **B. Integrity & safety** (deterministic): `lint-wiki.mjs` + `diff-guard.mjs`; index/log coverage;
23
+ state-order invariant; no broken/orphan links; secret/tenant/contamination/sensitivity scans;
24
+ memory sources project-scoped only (no global Codex memory / Chronicle).
25
+ - **C. No-loss / parity**: pre/post manifest maps every legacy page/doc/command/ingest-path/role;
26
+ nothing dropped; docs absorption idempotent with zero dangling links; old README ingested before
27
+ rewrite; no leftover project-local machinery except generated overlays + role agents.
28
+ - **D. Runtime surfaces** (both runtimes): canonical commands resolve on Claude; `$lisa-wiki-*` on
29
+ Codex; each `config.staff[]` role has its doc page + both subagents; MCP doctor passes or connector
30
+ cleanly disabled; external-write connectors skipped unless explicit intent.
31
+ - **E. Functional smoke** (skill-orchestrated): targeted ingest of a small fixture exercises the full
32
+ ordered pipeline (in the migration branch or dry/scratch mode — **no extra PR**); `/query` returns
33
+ a cited answer; `/lint` clean (or expected phase warnings); `/onboard-me` completes read-mostly with
34
+ no PII; bare `/ingest --dry-run` lists non-external-write sources; `/doctor` rerun is idempotent.
35
+ - **F. Mode-specific**: embedded self-ingest at HEAD; wrapper child-docs ingested-not-moved and not
36
+ staged; standalone/subdir path resolution; no-PR mode does not require PR creation.
37
+ - **G. Git / CI / distribution** (deterministic): clean working tree (only intended changes); no
38
+ secrets/OAuth committed; PR/auto-merge policy honored; CI validator green if `--with-ci`; (Lisa
39
+ only) `bun run build:plugins` builds both artifacts and `check:plugins` passes.
40
+
41
+ ## Notes
42
+ - Deterministic items are run by `scripts/verify-migration.mjs` (which emits the JSON report); this
43
+ skill adds the functional smoke tests and interprets phase-allowed warnings.
44
+ - Read-mostly: the smoke tests must not open an extra PR or perform external writes.
45
+
46
+ ## Related
47
+ `lisa-wiki-migrate`, `lisa-wiki-lint`, `lisa-wiki-setup`.
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: lisa-wiki-ingest
3
+ description: Ingest source material into the LLM Wiki. With an argument (URL, file path, or prompt) it ingests that one source; with no argument it runs a full ingest across every enabled non-external-write source. Routes to the right connector, then runs the ordered pipeline (source note → synthesis → index → log → verify → state → commit/PR). Use whenever new knowledge should enter the wiki.
4
+ ---
5
+
6
+ # lisa-wiki-ingest
7
+
8
+ The single entry point for getting knowledge into the wiki. It is a **router**: it never reimplements
9
+ synthesis per source — it selects a connector to produce a sanitized source note, then the kernel
10
+ performs the shared, ordered pipeline.
11
+
12
+ ## Modes
13
+ - **Targeted:** `/ingest <url|file|prompt>` — ingest one source. Classify the input and pick the
14
+ matching connector.
15
+ - **Full:** `/ingest` (no argument, or "do a full ingest") — iterate **every enabled connector whose
16
+ side-effect policy permits unattended ingest**: self + other registered projects' git/PR history,
17
+ project-scoped memory, roles, plus read-only registered sources (notion, jira, confluence,
18
+ quickbooks, …). `external-write` connectors (Slack OAuth, CRM writeback) are **skipped unless the
19
+ run includes explicit external-write intent**.
20
+ - **Dry run:** `/ingest --dry-run` — list the sources a full ingest would run; perform no writes.
21
+
22
+ ## The ordered pipeline (per source) — never reorder
23
+ 1. **Connector** validates (tenant guard + auth), reads its state cursor (first-run vs incremental),
24
+ fetches read-only, and writes a sanitized **source note** under `wiki/sources/<system>/` plus run
25
+ metadata. A connector writes *only* its source note + metadata — never synthesis/index/log/state.
26
+ 2. **Synthesis** (kernel): distill durable knowledge into the appropriate category pages, with
27
+ citations back to the source note. Weak/uncertain material → `wiki/open-questions/`, never asserted.
28
+ 3. **Index**: update `wiki/index.md`.
29
+ 4. **Log**: append a `wiki/log.md` entry (fixed operation vocabulary).
30
+ 5. **Verify**: `git diff --check`, secret/tenant/contamination scans, touched-file guard.
31
+ 6. **State**: advance the connector's `wiki/state/<system>/*.json` cursor — only now, after 1–5 pass.
32
+ 7. **Commit/PR**: per `config.git` policy. `external-write` runs and sensitive content never auto-merge.
33
+
34
+ ## Rules
35
+ - Source-note-before-synthesis; state advanced **only** after verification.
36
+ - Project-scoped only; memory ingestion never touches global/Codex-global stores.
37
+ - Respect `sourceRetention` and `sensitivity`; do not invent facts.
38
+ - Connector execution and the connector contract are detailed in the connector skills (M2+); this
39
+ router defines and enforces the ordering and side-effect rules above.
40
+
41
+ ## Related
42
+ `lisa-wiki-add-ingest` (scaffold a custom front-door that chains here), `lisa-wiki-query`,
43
+ `lisa-wiki-lint`, `lisa-wiki-doctor`.
@@ -0,0 +1,32 @@
1
+ ---
2
+ name: lisa-wiki-lint
3
+ description: Health-check the LLM Wiki. Reports orphan pages, contradictions, stale claims, broken internal links, missing index/log coverage, structure-manifest violations, and secret/tenant leaks. Use periodically or before hardening a wiki. Read-only — it reports findings, it does not fix them.
4
+ ---
5
+
6
+ # lisa-wiki-lint
7
+
8
+ Run the wiki's integrity checks and report findings by severity. Lint is **read-only**: it diagnoses,
9
+ it does not repair (use `/ingest`, `/setup`, or `/migrate` to fix).
10
+
11
+ ## What it checks (deterministic core via `scripts/lint-wiki.mjs`)
12
+ - **Frontmatter** present/valid where required (per `schema/page-frontmatter.schema.json`).
13
+ - **Index coverage**: every page appears in `wiki/index.md`; no index rows point at missing pages.
14
+ - **Log coverage**: material changes have `wiki/log.md` entries.
15
+ - **Links**: no broken internal links; no orphan pages (unreferenced and unlinked).
16
+ - **State ordering**: no state cursor advanced without its source notes + synthesis + index + log.
17
+ - **Structure**: files conform to `schema/wiki-structure.schema.json` (canonical locations).
18
+ - **Safety**: secret patterns, tenant/contamination terms, stray binaries, child-repo contents
19
+ staged in wrapper mode.
20
+
21
+ ## What it checks (LLM-assisted)
22
+ - **Contradictions** between claims; **stale** claims (older than the configured staleness window);
23
+ **coverage gaps** vs the wiki's stated `purpose`.
24
+
25
+ ## Output
26
+ A report grouped by severity, with each item marked `PASS | WARN | FAIL`. During phased migration,
27
+ legacy issues are reported as `WARN`; in hard-enforcement mode structural/integrity issues are `FAIL`.
28
+ Read-only: lint prints the report and does not modify the wiki (it does not write a `LINT` log entry).
29
+
30
+ ## Related
31
+ `lisa-wiki-doctor` (broader post-migration verification that runs lint among other checks),
32
+ `lisa-wiki-ingest`, `lisa-wiki-setup`.
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: lisa-wiki-migrate
3
+ description: Migrate an existing, hand-rolled wiki implementation onto the lisa-wiki kernel — phased and compatibility-first, with a strict no-loss guarantee. Use when adopting lisa-wiki in a repo that already has its own wiki/, ingest skills, docs, or roles. Renaming things into the canonical shape is fine; losing functionality or data is not. Ends by running /doctor.
4
+ ---
5
+
6
+ # lisa-wiki-migrate
7
+
8
+ Move a repo's bespoke wiki onto the kernel without breaking it or producing one giant diff. Each
9
+ phase is a reviewable change; nothing legacy is deleted until its replacement is parity-checked.
10
+
11
+ ## Migration invariant — rename, never lose
12
+ Any unique command, ingest path, or role is migrated **as though created via** `/add-ingest`
13
+ (front-door skill) or `/add-role` (subagent); wiki-ingest aliases (`*-wiki-ingest`, custom `/ingest`
14
+ routers, …) are renamed to the canonical `/ingest`. **Loss of functionality or data is not
15
+ acceptable** — for each migrated artifact, run the old path and the new path and diff the output
16
+ before deleting the old one.
17
+
18
+ ## Phases (per repo; one reviewable change each)
19
+ - **0 — Inventory.** Profile the repo: mode, root, categories, frontmatter coverage, log/index
20
+ format, source dirs, state files, connectors, runtime surfaces, MCP config, scripts, PR policy.
21
+ Write a pre/post manifest mapping every legacy page, source note, doc, command, ingest path, role.
22
+ - **1 — Adopt kernel (no content rewrite).** Add `wiki/lisa-wiki.config.json`, render the contract
23
+ snapshot, add `wiki/state/README.md`, run validators in **warning** mode.
24
+ - **1b — Documentation absorption & structure.** `scripts/absorb-docs.mjs` moves the host repo's own
25
+ docs (`docs/`, `specs/`, top-level docs) into `wiki/documentation/`, ingests them, and conforms to
26
+ the structure manifest; `scripts/rewrite-refs.mjs` rewrites every internal link/citation/index
27
+ entry (zero dangling links). Keep-in-place files stay at conventional paths. **Ask** the README
28
+ mode (default `rich`; `stub` only on explicit choice). Wrapper mode moves only host docs, never
29
+ child-project docs. Idempotent (source fingerprints); parity-checked.
30
+ - **2 — Runtime consolidation.** Replace duplicated local wiki skills with the plugin's; bespoke ones
31
+ become `/add-ingest` front-doors or `/add-role` subagents. Claude commands become facades.
32
+ - **3 — Connector consolidation.** Centralize shared connectors (e.g. Slack); keep org-specific ones
33
+ as contrib/overlay.
34
+ - **4 — Normalize by touch.** New/touched pages get frontmatter; new logs use the canonical table;
35
+ legacy stays parseable until deliberately migrated.
36
+ - **5 — Hard enforcement.** Flip validators to hard-fail (and enable CI) once the baseline is clean.
37
+
38
+ ## Finish
39
+ Run `lisa-wiki-doctor --migration`. The repo is not considered migrated until the verdict is `READY`
40
+ (or a human-approved `READY_WITH_WARNINGS`). Roll back by reverting the migration change.
41
+
42
+ ## Related
43
+ `lisa-wiki-doctor`, `lisa-wiki-setup`, `lisa-wiki-add-ingest`, `lisa-wiki-add-role`.
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: lisa-wiki-onboard-me
3
+ description: Onboard a user to the project via its LLM Wiki. Interviews the user about themselves in relation to the project, captures that to project-scoped memory only, then gives a guided tour of what the project is and sample questions they can ask. Use when someone is new to the project or asks to be onboarded. Read-mostly — it does not open PRs or write PII into the wiki.
4
+ ---
5
+
6
+ # lisa-wiki-onboard-me
7
+
8
+ Bidirectional onboarding: learn who the user is *in relation to this project*, then teach them what
9
+ the project is and how to use the wiki. The minimal project README points here.
10
+
11
+ ## Workflow
12
+ 1. **Interview** (brief): the user's role, goals, and what they intend to do in this project.
13
+ 2. **Capture** to **project-scoped memory only** — Claude's per-project memory; on Codex only if a
14
+ project-scoped memory store exists. If none exists, keep it session-local. **Never** write the
15
+ capture into global memory and **never** commit PII into the wiki.
16
+ 3. **Tour:** summarize the project from `wiki/start-here.md` + the wiki's `purpose`, show the folder
17
+ map (categories), and point at the key entry pages.
18
+ 4. **Sample questions:** offer a handful of `/query` prompts tuned to the user's role to get them
19
+ productive immediately.
20
+
21
+ ## Modes
22
+ - Default: **read-mostly, no PR.**
23
+ - `--save-memory`: persist the capture to project-scoped memory.
24
+ - `--write-audience-note`: write a sanitized, **non-PII** audience/role note into the wiki via the
25
+ normal PR flow — only when `onboarding.allowAudienceNote: true` in config.
26
+
27
+ ## Rules
28
+ - Project-scoped only; global Codex memory and the Chronicle store are never used.
29
+ - Do not auto-create a staff role; offer `/add-role` only if the user is taking on a durable project
30
+ function (not merely onboarding).
31
+
32
+ ## Related
33
+ `lisa-wiki-query`, `lisa-wiki-usage`, `lisa-wiki-add-role`.
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: lisa-wiki-query
3
+ description: Answer a question from the LLM Wiki with citations. Reads the index, drills into relevant pages, and synthesizes a cited answer. Read-only by default; only files new synthesis back into the wiki when the user explicitly asks. Use when someone asks a question the wiki should be able to answer, or wants to explore what the wiki knows.
4
+ ---
5
+
6
+ # lisa-wiki-query
7
+
8
+ Answer from the wiki, with citations, without changing it (by default).
9
+
10
+ ## Workflow
11
+ 1. Read `wiki/index.md` to locate candidate pages; consult `wiki/start-here.md` for orientation.
12
+ 2. Drill into the relevant synthesis pages and their cited source notes.
13
+ 3. Synthesize an answer. **Every claim cites its wiki page and/or source note.** If the wiki does not
14
+ support an answer, say so plainly rather than inventing one; suggest an `/ingest` that would fill
15
+ the gap. Only record the gap in `wiki/open-questions/` if the user explicitly asks (that is a
16
+ writeback — see step 4); never write it silently.
17
+ 4. **Writeback (opt-in only):** if — and only if — the user explicitly asks to persist new synthesis
18
+ discovered during the query, route it through the ingest pipeline so provenance/index/log/state
19
+ stay consistent, and log it as a `QUERY` operation. Never write back silently.
20
+
21
+ ## Rules
22
+ - **Read-only by default.** No page edits, index/log changes, state advancement, or PRs unless the
23
+ user explicitly requests writeback.
24
+ - Prefer the wiki's own content over outside knowledge; distinguish wiki-sourced facts from your own
25
+ reasoning.
26
+ - Surface contradictions or stale claims you encounter as `/lint`-style findings rather than
27
+ silently picking one.
28
+
29
+ ## Related
30
+ `lisa-wiki-ingest`, `lisa-wiki-lint`, `lisa-wiki-usage`.
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: lisa-wiki-setup
3
+ description: Scaffold, repair, verify, or upgrade a project's LLM Wiki from its config. Use when setting up the wiki in a new repo, fixing a broken/incomplete structure, or upgrading to a newer kernel version. Asks the wiki's purpose and README mode, renders the contract snapshot, scaffolds the canonical folders, and seeds the staff roster. Idempotent and non-destructive.
4
+ ---
5
+
6
+ # lisa-wiki-setup
7
+
8
+ Bring a repo's `wiki/` into conformance with the canonical structure from
9
+ `wiki/lisa-wiki.config.json`. Safe to re-run: it creates what is missing and repairs drift, but
10
+ never overwrites human-authored content.
11
+
12
+ ## When to use
13
+ - First-time setup of the wiki in a repo.
14
+ - Repairing a wiki that fails `/doctor` structural checks.
15
+ - Upgrading after a new `lisa-wiki` release (`--upgrade`): re-render the contract snapshot and run a
16
+ compatibility report before writing.
17
+ - `--with-ci`: also install the optional GitHub Action validator (`ci/lisa-wiki-validate.yml`).
18
+
19
+ ## Workflow
20
+ 1. **Config.** Read `wiki/lisa-wiki.config.json`, or create it interactively. Ask for: `org`,
21
+ `displayName`, **`purpose`** (one paragraph — what this wiki is for), `mode`
22
+ (`embedded|wrapper|standalone|subdir`), `categories`, source layout, connectors, sensitivity,
23
+ `sourceRetention`, and the **README mode** (`rich` default | `stub` | `preserve` — always ask;
24
+ never select `stub` implicitly). Validate with `scripts/validate-config.mjs`.
25
+ 2. **Structure.** Scaffold the canonical tree per `schema/wiki-structure.schema.json`:
26
+ `wiki/{index.md, log.md, start-here.md, schema/, sources/, state/, staff/, <category dirs>}`.
27
+ Create only what is missing.
28
+ 3. **Contract.** Render `wiki/schema/llm-wiki-contract.md` from the plugin templates + config via
29
+ `scripts/render-contract.mjs`, stamping the `kernelVersion`. This snapshot keeps the wiki
30
+ self-describing without the plugin installed.
31
+ 4. **Pointers.** Ensure `AGENTS.md` / `CLAUDE.md` point at the contract + plugin (thin pointers only).
32
+ 5. **Staff.** For each `config.staff[]` entry, generate the role's `wiki/staff/<role>.md` page and its
33
+ dual-runtime subagents by delegating to `lisa-wiki-add-role` (running the subagents is out of scope).
34
+ 6. **README.** Apply the chosen README mode (ingest the old README first; `rich` keeps install/usage +
35
+ adds the onboarding line; `stub` is the minimal pointer; `preserve` leaves it).
36
+ 7. **Verify.** Run `lisa-wiki-doctor` and report the verdict + any blocking items.
37
+
38
+ ## Rules
39
+ - Idempotent; re-running produces no spurious changes.
40
+ - Never overwrite human content; only create/repair structure and the rendered snapshot. The README is
41
+ rewritten only after its old content has been ingested, and only per the chosen `readme.mode`.
42
+ - Project-scoped only; never stage secrets/OAuth artifacts; honor `mode` safety (wrapper/standalone).
43
+
44
+ ## Related
45
+ `lisa-wiki-add-role`, `lisa-wiki-doctor`, `lisa-wiki-migrate`, `lisa-wiki-usage`.
@@ -0,0 +1,50 @@
1
+ ---
2
+ name: lisa-wiki-usage
3
+ description: Explain how to browse, query, and contribute to this project's LLM Wiki. Use when a user asks how the wiki works, where knowledge lives, how to find something, or how to add to it — the read/navigation path, not an ingestion or write workflow.
4
+ ---
5
+
6
+ # lisa-wiki-usage
7
+
8
+ Orient a human or agent to the project's LLM Wiki and point them at the right entry points and
9
+ canonical commands. This skill is **read-only guidance** — it never writes wiki pages, advances
10
+ state, or opens PRs.
11
+
12
+ ## What the wiki is
13
+
14
+ A git-native markdown knowledge base under `wiki/`, maintained by the `lisa-wiki` plugin. It follows
15
+ the three-layer model: immutable **raw sources** (`wiki/sources/`), the LLM-owned **synthesis** layer
16
+ (category directories like `concepts/`, `entities/`, `architecture/`, …), and the **schema** that
17
+ governs it (`wiki/schema/llm-wiki-contract.md`, rendered from the project's `wiki/lisa-wiki.config.json`).
18
+
19
+ ## Entry points (read these first)
20
+
21
+ 1. `wiki/start-here.md` — orientation and the wiki's stated purpose.
22
+ 2. `wiki/index.md` — the navigation map of every page (grouped by category).
23
+ 3. `wiki/schema/llm-wiki-contract.md` — the rules this wiki follows.
24
+ 4. `wiki/log.md` — the append-only history of every ingestion/maintenance operation.
25
+
26
+ ## How to do things
27
+
28
+ On **Claude** these are slash commands; on **Codex** invoke the same skills from the app slash list
29
+ (e.g. `$lisa-wiki-query`).
30
+
31
+ - **Find or answer something:** `/query "<your question>"` (Codex: `$lisa-wiki-query`) — read-only by
32
+ default; returns a cited answer drawn from the wiki. Or browse `wiki/index.md` manually.
33
+ - **Get oriented as a new user:** `/onboard-me` (Codex: `$lisa-wiki-onboard-me`) — a guided tour plus
34
+ sample questions tuned to your role.
35
+ - **Add knowledge:** `/ingest <url|file|prompt>` (Codex: `$lisa-wiki-ingest`) for a single source, or
36
+ `/ingest` with no argument for a full ingest across all enabled **non-external-write** sources
37
+ (external-write sources like Slack OAuth require explicit intent). Do not hand-edit synthesis pages
38
+ to add facts — route them through `/ingest` so provenance, the index, and the log stay consistent.
39
+ - **Check the wiki's health:** `/lint` (Codex: `$lisa-wiki-lint`) — orphans, contradictions, stale
40
+ claims, broken links.
41
+
42
+ ## Citations & trust
43
+
44
+ Every synthesized claim should cite a source note (e.g. `Source: wiki/sources/<system>/<note>.md`).
45
+ If you find an uncited or contradictory claim, that is a `/lint` finding — surface it rather than
46
+ trusting it. Weak or unverified material belongs in `wiki/open-questions/`, not stated as fact.
47
+
48
+ ## Related skills
49
+
50
+ `lisa-wiki-ingest`, `lisa-wiki-query`, `lisa-wiki-lint`, `lisa-wiki-onboard-me`, `lisa-wiki-setup`.
@@ -0,0 +1,16 @@
1
+ ---
2
+ name: {{id}}
3
+ description: {{roleDescription}}
4
+ ---
5
+
6
+ You are **{{role}}** for {{org}} — the domain expert for {{expertise}}.
7
+
8
+ Your knowledge lives in this project's LLM Wiki under: {{ownedPaths}}.
9
+
10
+ Operating rules:
11
+ - **Query the wiki first.** It is your source of truth — do not rely on stale or outside memory.
12
+ Use the `lisa-wiki-query` skill (`/query`) before answering.
13
+ - **Contribute via ingestion.** Add new knowledge with `lisa-wiki-ingest` (`/ingest`) so provenance,
14
+ the index, the log, and state stay consistent. Never hand-edit synthesis pages to add facts.
15
+ - **Stay in your lane.** Work within your owned domain; defer other domains to their roles.
16
+ - **Respect sensitivity ({{sensitivity}})** and never expose secrets or out-of-scope material.
@@ -0,0 +1,15 @@
1
+ name = "{{id}}"
2
+ description = "{{roleDescription}}"
3
+ developer_instructions = """
4
+ You are {{role}} for {{org}} — the domain expert for {{expertise}}.
5
+
6
+ Your knowledge lives in this project's LLM Wiki under: {{ownedPaths}}.
7
+
8
+ Operating rules:
9
+ - Query the wiki first (use the lisa-wiki-query skill); it is your source of truth — do not rely on
10
+ stale or outside memory.
11
+ - Contribute new knowledge via the lisa-wiki-ingest skill so provenance, index, log, and state stay
12
+ consistent; never hand-edit synthesis pages to add facts.
13
+ - Stay within your owned domain; defer other domains to their roles.
14
+ - Respect sensitivity ({{sensitivity}}); never expose secrets or out-of-scope material.
15
+ """
@@ -0,0 +1,17 @@
1
+ # {{displayName}} — Index
2
+
3
+ > The navigation map of this wiki. Maintained on every ingestion. One table per category;
4
+ > rows are `| Page | Summary | Updated |`. Read this first when looking for anything.
5
+
6
+ ## Orientation
7
+ | Page | Summary | Updated |
8
+ |---|---|---|
9
+ | [start-here](start-here.md) | Orientation and the wiki's purpose | {{generatedDate}} |
10
+ | [LLM Wiki Contract](schema/llm-wiki-contract.md) | The rules this wiki follows | {{generatedDate}} |
11
+
12
+ <!-- Category sections (concepts, entities, …) are added/maintained by ingestion. -->
13
+
14
+ ## Sources
15
+ | Source notes | Latest |
16
+ |---|---|
17
+ | `sources/` | (none yet) |
@@ -0,0 +1,60 @@
1
+ # {{displayName}} — LLM Wiki Contract
2
+
3
+ > Generated by the `lisa-wiki` plugin from `{{wikiRoot}}/lisa-wiki.config.json`.
4
+ > kernelVersion: {{kernelVersion}} · schemaVersion: {{schemaVersion}} · rendered: {{generatedDate}}
5
+ > This snapshot keeps the wiki self-describing **without** the plugin installed. Re-render with
6
+ > `/setup --upgrade`; do not hand-edit — change the config instead.
7
+
8
+ ## Purpose
9
+ {{purpose}}
10
+
11
+ ## What this is
12
+ A git-native markdown knowledge base under `{{wikiRoot}}/`, owned by **{{org}}**, maintained by the
13
+ lisa-wiki kernel. Three layers: immutable **raw sources** (`{{wikiRoot}}/sources/`), the LLM-owned
14
+ **synthesis** layer (the category directories), and this **schema** layer (config + this contract).
15
+ Repository mode: **{{mode}}**.
16
+
17
+ ## Layout
18
+ - `{{wikiRoot}}/index.md` — navigation map of every page (read first).
19
+ - `{{wikiRoot}}/log.md` — append-only operation ledger.
20
+ - `{{wikiRoot}}/start-here.md` — orientation + purpose.
21
+ - `{{wikiRoot}}/sources/` — provenance (source notes); layout: **{{sourceLayout}}**.
22
+ - `{{wikiRoot}}/state/` — per-source ingestion cursors (JSON).
23
+ - `{{wikiRoot}}/staff/` — digital-staff role pages (optional).
24
+ - Synthesis categories: {{categories}}.
25
+
26
+ ## Ordered ingestion pipeline (never reorder)
27
+ `source note → synthesis → index → log → verify → state → commit/PR`.
28
+ State advances **only** after source notes + synthesis + index + log + verification all pass.
29
+ Connectors write **only** their source note (+ run metadata); the kernel performs synthesis, index,
30
+ log, verification, state advancement, and PR.
31
+
32
+ ## Standards
33
+ - Frontmatter required on new/touched synthesis pages and source notes
34
+ (`type`, `created`, `updated`, `related`, `sources`[, `sensitivity`]).
35
+ - `index.md` is a per-category table; `log.md` is an append-only table with the fixed operation
36
+ vocabulary: `INIT, SETUP, INGEST, CREATE, UPDATE, MERGE, DEPRECATE, LINT, QUERY, REBUILD-INDEX`.
37
+ - Cite sources in plain text, e.g. `Source: {{wikiRoot}}/sources/<system>/<note>.md`.
38
+ - Do not invent facts; weak or unverified material → `{{wikiRoot}}/open-questions/`.
39
+
40
+ ## Sources & connectors
41
+ Enabled connectors: {{connectors}}.
42
+ Universal sources every project may ingest: self + other registered projects' git/PR history,
43
+ **project-scoped** memory, and roles. **Memory is project-scoped ONLY — never global/unrelated.**
44
+ External-write connectors (e.g. Slack OAuth, CRM writeback) run only with explicit intent and never
45
+ auto-merge. A bare full ingest runs every enabled non-external-write source.
46
+
47
+ ## Safety
48
+ - Source retention: **{{sourceRetention}}**. Default sensitivity: **{{sensitivityDefault}}**.
49
+ - Pre-commit: `git diff --check`, secret scan, tenant/contamination scan, touched-file guard.
50
+ - Never commit secrets/OAuth artifacts. In wrapper/standalone modes, never stage child-repo contents.
51
+
52
+ ## Git
53
+ {{prPolicy}}.
54
+
55
+ ## README
56
+ Mode: **{{readmeMode}}** (rich keeps the public README; stub points to `/onboard-me`; preserve leaves it).
57
+
58
+ ## Commands
59
+ `/ingest` · `/query` · `/lint` · `/setup` · `/migrate` · `/add-ingest` · `/add-role` · `/onboard-me` · `/doctor`
60
+ (On Codex, invoke the matching `lisa-wiki-*` skills, e.g. `$lisa-wiki-ingest`.)
@@ -0,0 +1,8 @@
1
+ # {{displayName}} — Log
2
+
3
+ > Append-only. One row per operation. Operations:
4
+ > `INIT, SETUP, INGEST, CREATE, UPDATE, MERGE, DEPRECATE, LINT, QUERY, REBUILD-INDEX`.
5
+
6
+ | Date | Operation | Target | Notes |
7
+ |---|---|---|---|
8
+ | {{generatedDate}} | SETUP | {{wikiRoot}}/ | Initialized {{displayName}} with the lisa-wiki kernel. |
@@ -0,0 +1,18 @@
1
+ ---
2
+ type: architecture
3
+ created: {{date}}
4
+ updated: {{date}}
5
+ related: []
6
+ sources: []
7
+ ---
8
+
9
+ # {{title}}
10
+
11
+ ## Overview
12
+
13
+ ## Components
14
+
15
+ ## Data flow
16
+
17
+ ## Constraints & decisions
18
+ <!-- Link relevant decision/ pages; cite source notes -->
@@ -0,0 +1,18 @@
1
+ ---
2
+ type: concept
3
+ created: {{date}}
4
+ updated: {{date}}
5
+ related: []
6
+ sources: []
7
+ ---
8
+
9
+ # {{title}}
10
+
11
+ ## Definition
12
+
13
+ ## Key points
14
+
15
+ ## Evidence
16
+ <!-- Cite source notes, e.g. Source: sources/<system>/<note>.md -->
17
+
18
+ ## Open questions
@@ -0,0 +1,18 @@
1
+ ---
2
+ type: decision
3
+ created: {{date}}
4
+ updated: {{date}}
5
+ related: []
6
+ sources: []
7
+ ---
8
+
9
+ # {{title}}
10
+
11
+ ## Context
12
+
13
+ ## Decision
14
+
15
+ ## Consequences
16
+
17
+ ## Status
18
+ <!-- proposed | accepted | superseded -->
@@ -0,0 +1,19 @@
1
+ ---
2
+ type: entity
3
+ created: {{date}}
4
+ updated: {{date}}
5
+ related: []
6
+ sources: []
7
+ ---
8
+
9
+ # {{title}}
10
+
11
+ ## Overview
12
+
13
+ ## Key capabilities
14
+
15
+ ## Relationships
16
+ <!-- People, products, systems this entity connects to -->
17
+
18
+ ## Context & evidence
19
+ <!-- Cite source notes -->
@@ -0,0 +1,18 @@
1
+ ---
2
+ type: open-question
3
+ created: {{date}}
4
+ updated: {{date}}
5
+ related: []
6
+ sources: []
7
+ ---
8
+
9
+ # {{title}}
10
+
11
+ ## The question
12
+
13
+ ## What we know
14
+ <!-- Cite source notes; this is where weak/unverified material lives until confirmed -->
15
+
16
+ ## What we still need
17
+
18
+ ## Owner