@codyswann/lisa 2.24.0 → 2.25.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.
Files changed (154) hide show
  1. package/.claude-plugin/marketplace.json +12 -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/rules/config-resolution.md +32 -1
  6. package/plugins/lisa/skills/atlassian-access/SKILL.md +32 -1
  7. package/plugins/lisa/skills/notion-access/SKILL.md +32 -1
  8. package/plugins/lisa/skills/setup-atlassian/SKILL.md +32 -1
  9. package/plugins/lisa/skills/setup-linear/SKILL.md +32 -1
  10. package/plugins/lisa/skills/setup-notion/SKILL.md +32 -1
  11. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  12. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  13. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  14. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  15. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  16. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  17. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  18. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  19. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  20. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  21. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  22. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  23. package/plugins/lisa-wiki/.claude-plugin/plugin.json +8 -0
  24. package/plugins/lisa-wiki/.codex-plugin/plugin.json +32 -0
  25. package/plugins/lisa-wiki/ci/lisa-wiki-validate.yml +32 -0
  26. package/plugins/lisa-wiki/commands/add-ingest.md +6 -0
  27. package/plugins/lisa-wiki/commands/add-role.md +6 -0
  28. package/plugins/lisa-wiki/commands/doctor.md +6 -0
  29. package/plugins/lisa-wiki/commands/ingest.md +6 -0
  30. package/plugins/lisa-wiki/commands/lint.md +6 -0
  31. package/plugins/lisa-wiki/commands/migrate.md +6 -0
  32. package/plugins/lisa-wiki/commands/onboard-me.md +6 -0
  33. package/plugins/lisa-wiki/commands/query.md +6 -0
  34. package/plugins/lisa-wiki/commands/setup.md +6 -0
  35. package/plugins/lisa-wiki/schema/lisa-wiki-config.schema.json +118 -0
  36. package/plugins/lisa-wiki/schema/wiki-structure.schema.json +51 -0
  37. package/plugins/lisa-wiki/scripts/_wiki-lib.mjs +185 -0
  38. package/plugins/lisa-wiki/scripts/diff-guard.mjs +116 -0
  39. package/plugins/lisa-wiki/scripts/ingest-git.mjs +189 -0
  40. package/plugins/lisa-wiki/scripts/ingest-memory.mjs +130 -0
  41. package/plugins/lisa-wiki/scripts/ingest-roles.mjs +85 -0
  42. package/plugins/lisa-wiki/scripts/ingest_slack_channel.py +329 -0
  43. package/plugins/lisa-wiki/scripts/lint-wiki.mjs +320 -0
  44. package/plugins/lisa-wiki/scripts/mcp-doctor.mjs +72 -0
  45. package/plugins/lisa-wiki/scripts/render-contract.mjs +107 -0
  46. package/plugins/lisa-wiki/scripts/rewrite-refs.mjs +144 -0
  47. package/plugins/lisa-wiki/scripts/slack_oauth_user.py +179 -0
  48. package/plugins/lisa-wiki/scripts/validate-config.mjs +232 -0
  49. package/plugins/lisa-wiki/scripts/verify-migration.mjs +199 -0
  50. package/plugins/lisa-wiki/skills/lisa-wiki-add-ingest/SKILL.md +34 -0
  51. package/plugins/lisa-wiki/skills/lisa-wiki-add-role/SKILL.md +30 -0
  52. package/plugins/lisa-wiki/skills/lisa-wiki-connector-confluence/SKILL.md +25 -0
  53. package/plugins/lisa-wiki/skills/lisa-wiki-connector-docs/SKILL.md +30 -0
  54. package/plugins/lisa-wiki/skills/lisa-wiki-connector-git/SKILL.md +25 -0
  55. package/plugins/lisa-wiki/skills/lisa-wiki-connector-jira/SKILL.md +28 -0
  56. package/plugins/lisa-wiki/skills/lisa-wiki-connector-memory/SKILL.md +28 -0
  57. package/plugins/lisa-wiki/skills/lisa-wiki-connector-notion/SKILL.md +25 -0
  58. package/plugins/lisa-wiki/skills/lisa-wiki-connector-roles/SKILL.md +22 -0
  59. package/plugins/lisa-wiki/skills/lisa-wiki-connector-slack/SKILL.md +30 -0
  60. package/plugins/lisa-wiki/skills/lisa-wiki-connector-web/SKILL.md +23 -0
  61. package/plugins/lisa-wiki/skills/lisa-wiki-doctor/SKILL.md +47 -0
  62. package/plugins/lisa-wiki/skills/lisa-wiki-ingest/SKILL.md +43 -0
  63. package/plugins/lisa-wiki/skills/lisa-wiki-lint/SKILL.md +32 -0
  64. package/plugins/lisa-wiki/skills/lisa-wiki-migrate/SKILL.md +43 -0
  65. package/plugins/lisa-wiki/skills/lisa-wiki-onboard-me/SKILL.md +33 -0
  66. package/plugins/lisa-wiki/skills/lisa-wiki-query/SKILL.md +30 -0
  67. package/plugins/lisa-wiki/skills/lisa-wiki-setup/SKILL.md +45 -0
  68. package/plugins/lisa-wiki/skills/lisa-wiki-usage/SKILL.md +50 -0
  69. package/plugins/lisa-wiki/templates/agents/role-agent.claude.md +16 -0
  70. package/plugins/lisa-wiki/templates/agents/role-agent.codex.toml +15 -0
  71. package/plugins/lisa-wiki/templates/index.md +17 -0
  72. package/plugins/lisa-wiki/templates/llm-wiki-contract.md +60 -0
  73. package/plugins/lisa-wiki/templates/log.md +8 -0
  74. package/plugins/lisa-wiki/templates/page-types/architecture.md +18 -0
  75. package/plugins/lisa-wiki/templates/page-types/concept.md +18 -0
  76. package/plugins/lisa-wiki/templates/page-types/decision.md +18 -0
  77. package/plugins/lisa-wiki/templates/page-types/entity.md +19 -0
  78. package/plugins/lisa-wiki/templates/page-types/open-question.md +18 -0
  79. package/plugins/lisa-wiki/templates/page-types/playbook.md +18 -0
  80. package/plugins/lisa-wiki/templates/page-types/project.md +19 -0
  81. package/plugins/lisa-wiki/templates/page-types/requirement.md +19 -0
  82. package/plugins/lisa-wiki/templates/page-types/staff.md +26 -0
  83. package/plugins/lisa-wiki/templates/start-here.md +24 -0
  84. package/plugins/lisa-wiki/templates/state-readme.md +20 -0
  85. package/plugins/src/base/rules/config-resolution.md +32 -1
  86. package/plugins/src/base/skills/atlassian-access/SKILL.md +32 -1
  87. package/plugins/src/base/skills/notion-access/SKILL.md +32 -1
  88. package/plugins/src/base/skills/setup-atlassian/SKILL.md +32 -1
  89. package/plugins/src/base/skills/setup-linear/SKILL.md +32 -1
  90. package/plugins/src/base/skills/setup-notion/SKILL.md +32 -1
  91. package/plugins/src/wiki/.claude-plugin/plugin.json +6 -0
  92. package/plugins/src/wiki/ci/lisa-wiki-validate.yml +32 -0
  93. package/plugins/src/wiki/commands/add-ingest.md +6 -0
  94. package/plugins/src/wiki/commands/add-role.md +6 -0
  95. package/plugins/src/wiki/commands/doctor.md +6 -0
  96. package/plugins/src/wiki/commands/ingest.md +6 -0
  97. package/plugins/src/wiki/commands/lint.md +6 -0
  98. package/plugins/src/wiki/commands/migrate.md +6 -0
  99. package/plugins/src/wiki/commands/onboard-me.md +6 -0
  100. package/plugins/src/wiki/commands/query.md +6 -0
  101. package/plugins/src/wiki/commands/setup.md +6 -0
  102. package/plugins/src/wiki/schema/lisa-wiki-config.schema.json +118 -0
  103. package/plugins/src/wiki/schema/wiki-structure.schema.json +51 -0
  104. package/plugins/src/wiki/scripts/_wiki-lib.mjs +185 -0
  105. package/plugins/src/wiki/scripts/diff-guard.mjs +116 -0
  106. package/plugins/src/wiki/scripts/ingest-git.mjs +189 -0
  107. package/plugins/src/wiki/scripts/ingest-memory.mjs +130 -0
  108. package/plugins/src/wiki/scripts/ingest-roles.mjs +85 -0
  109. package/plugins/src/wiki/scripts/ingest_slack_channel.py +329 -0
  110. package/plugins/src/wiki/scripts/lint-wiki.mjs +320 -0
  111. package/plugins/src/wiki/scripts/mcp-doctor.mjs +72 -0
  112. package/plugins/src/wiki/scripts/render-contract.mjs +107 -0
  113. package/plugins/src/wiki/scripts/rewrite-refs.mjs +144 -0
  114. package/plugins/src/wiki/scripts/slack_oauth_user.py +179 -0
  115. package/plugins/src/wiki/scripts/validate-config.mjs +232 -0
  116. package/plugins/src/wiki/scripts/verify-migration.mjs +199 -0
  117. package/plugins/src/wiki/skills/lisa-wiki-add-ingest/SKILL.md +34 -0
  118. package/plugins/src/wiki/skills/lisa-wiki-add-role/SKILL.md +30 -0
  119. package/plugins/src/wiki/skills/lisa-wiki-connector-confluence/SKILL.md +25 -0
  120. package/plugins/src/wiki/skills/lisa-wiki-connector-docs/SKILL.md +30 -0
  121. package/plugins/src/wiki/skills/lisa-wiki-connector-git/SKILL.md +25 -0
  122. package/plugins/src/wiki/skills/lisa-wiki-connector-jira/SKILL.md +28 -0
  123. package/plugins/src/wiki/skills/lisa-wiki-connector-memory/SKILL.md +28 -0
  124. package/plugins/src/wiki/skills/lisa-wiki-connector-notion/SKILL.md +25 -0
  125. package/plugins/src/wiki/skills/lisa-wiki-connector-roles/SKILL.md +22 -0
  126. package/plugins/src/wiki/skills/lisa-wiki-connector-slack/SKILL.md +30 -0
  127. package/plugins/src/wiki/skills/lisa-wiki-connector-web/SKILL.md +23 -0
  128. package/plugins/src/wiki/skills/lisa-wiki-doctor/SKILL.md +47 -0
  129. package/plugins/src/wiki/skills/lisa-wiki-ingest/SKILL.md +43 -0
  130. package/plugins/src/wiki/skills/lisa-wiki-lint/SKILL.md +32 -0
  131. package/plugins/src/wiki/skills/lisa-wiki-migrate/SKILL.md +43 -0
  132. package/plugins/src/wiki/skills/lisa-wiki-onboard-me/SKILL.md +33 -0
  133. package/plugins/src/wiki/skills/lisa-wiki-query/SKILL.md +30 -0
  134. package/plugins/src/wiki/skills/lisa-wiki-setup/SKILL.md +45 -0
  135. package/plugins/src/wiki/skills/lisa-wiki-usage/SKILL.md +50 -0
  136. package/plugins/src/wiki/templates/agents/role-agent.claude.md +16 -0
  137. package/plugins/src/wiki/templates/agents/role-agent.codex.toml +15 -0
  138. package/plugins/src/wiki/templates/index.md +17 -0
  139. package/plugins/src/wiki/templates/llm-wiki-contract.md +60 -0
  140. package/plugins/src/wiki/templates/log.md +8 -0
  141. package/plugins/src/wiki/templates/page-types/architecture.md +18 -0
  142. package/plugins/src/wiki/templates/page-types/concept.md +18 -0
  143. package/plugins/src/wiki/templates/page-types/decision.md +18 -0
  144. package/plugins/src/wiki/templates/page-types/entity.md +19 -0
  145. package/plugins/src/wiki/templates/page-types/open-question.md +18 -0
  146. package/plugins/src/wiki/templates/page-types/playbook.md +18 -0
  147. package/plugins/src/wiki/templates/page-types/project.md +19 -0
  148. package/plugins/src/wiki/templates/page-types/requirement.md +19 -0
  149. package/plugins/src/wiki/templates/page-types/staff.md +26 -0
  150. package/plugins/src/wiki/templates/start-here.md +24 -0
  151. package/plugins/src/wiki/templates/state-readme.md +20 -0
  152. package/scripts/build-plugins.sh +29 -21
  153. package/scripts/check-plugins-sync.sh +38 -1
  154. package/scripts/generate-codex-plugin-artifacts.mjs +22 -0
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: lisa-wiki-connector-confluence
3
+ description: Produce sanitized Confluence source notes for lisa-wiki ingest via the Atlassian MCP. Use only when lisa-wiki-ingest routes to the confluence connector. Read-only; tenant-guarded.
4
+ ---
5
+
6
+ # lisa-wiki-connector-confluence
7
+
8
+ Skill-driven connector (Atlassian MCP). Writes ONLY source notes under `wiki/sources/confluence/` and
9
+ emits a proposed cursor; the kernel does the rest.
10
+
11
+ ## Flow
12
+ 1. Confirm `connectors.confluence.enabled` and `sideEffects: read-only-ingest`.
13
+ 2. **Tenant guard:** verify the Atlassian connection matches `connectors.confluence.tenantGuard`
14
+ (same site/cloudId discipline as jira). Abort on mismatch.
15
+ 3. **Window:** read `wiki/state/confluence/*.json`. First run → configured window; incremental →
16
+ pages updated since the cursor. Scope to the configured spaces.
17
+ 4. **Fetch (read-only)** page content + metadata via the Atlassian MCP. Never edit Confluence.
18
+ 5. **Write source notes** under `wiki/sources/confluence/<YYYY-MM-DD>-confluence-ingest.md` with
19
+ frontmatter and citations (`Source: <space>/<page>`). Redact secrets; honor retention/sensitivity.
20
+ 6. **Emit run metadata** (proposed cursor, counts) to the handoff file; return to `lisa-wiki-ingest`.
21
+
22
+ ## Rules
23
+ - Abort on tenant mismatch; do not invent pages/decisions; weak evidence → open-questions.
24
+ - Disabled if the Atlassian MCP is absent (`scripts/mcp-doctor.mjs`).
25
+ - Writes only source notes + handoff meta; the kernel advances state.
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: lisa-wiki-connector-docs
3
+ description: Ingest a local document (PDF, DOCX, Markdown, text) into a sanitized source note for lisa-wiki ingest. Use only when lisa-wiki-ingest routes to the docs connector (a file-path input). Uses available local converters; no heavy bundled dependency.
4
+ ---
5
+
6
+ # lisa-wiki-connector-docs
7
+
8
+ Skill-driven connector. Converts a local document to markdown using whatever converter is available,
9
+ writes a source note, and hands off; the kernel does the rest.
10
+
11
+ ## Converters (no bundled heavy dependency)
12
+ - **Markdown / text**: ingest directly.
13
+ - **PDF**: `pdftotext` (Poppler) if available, else `pandoc`.
14
+ - **DOCX**: `pandoc` if available, else `textutil` (macOS).
15
+ If no suitable converter is installed, **skip that source and record a `docs` doctor finding** (the
16
+ file could not be converted) so the user can install a converter — a targeted `/ingest <file>` reports
17
+ the skip rather than pretending success. Missing converters are connector-specific, never a
18
+ plugin-install blocker.
19
+
20
+ ## Flow
21
+ 1. Confirm `connectors.docs.enabled` and `sideEffects: read-only-ingest`.
22
+ 2. Resolve the input file; pick the converter by extension; convert to markdown (read-only).
23
+ 3. Write a source note under `wiki/sources/docs/<YYYY-MM-DD>-<slug>.md` with frontmatter
24
+ (`type: source`, dates, `source_system: docs`, original filename) and the converted, reader-safe
25
+ text. Redact secrets; honor `sourceRetention`/`sensitivity`.
26
+ 4. Emit run metadata (source-note path) to the handoff file; return to `lisa-wiki-ingest`.
27
+
28
+ ## Rules
29
+ - Read-only on the source document; never modify the original.
30
+ - Writes only the source note + handoff meta; the kernel advances state.
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: lisa-wiki-connector-git
3
+ description: Produce sanitized git/PR-history source notes for lisa-wiki ingest. Use only when lisa-wiki-ingest routes to the git connector (self repo or a registered project). Read-only — never checks out, fetches, or mutates the target repo.
4
+ ---
5
+
6
+ # lisa-wiki-connector-git
7
+
8
+ A universal, deterministic connector backed by `scripts/ingest-git.mjs`. It writes ONLY a source note
9
+ under `wiki/sources/git/` (or a per-project path) and emits a proposed cursor; the kernel performs
10
+ synthesis/index/log/verify/state/PR.
11
+
12
+ ## Flow
13
+ 1. Confirm `connectors.git` is enabled and `read-only-ingest`.
14
+ 2. For the self repo (and each registered project under `projects/`), run:
15
+ ```
16
+ node "${PLUGIN_ROOT}/scripts/ingest-git.mjs" --repo <path> --slug <name> \
17
+ --config wiki/lisa-wiki.config.json --source-dir wiki/sources/git \
18
+ --state wiki/state/git/<slug>.json --emit-meta wiki/state/handoff/git-<slug>-<runId>.json
19
+ ```
20
+ 3. Hand the emitted source-note paths + proposed cursor back to `lisa-wiki-ingest`.
21
+
22
+ ## Rules
23
+ - Read-only: only `git log`/`rev-parse`/`gh pr list` against the repo; never checkout/fetch/reset/pull.
24
+ - In wrapper/standalone mode, the registered child repos are read-only inputs and are never staged.
25
+ - Writes only its source note + handoff meta; the kernel advances `wiki/state/git/<slug>.json`.
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: lisa-wiki-connector-jira
3
+ description: Produce sanitized JIRA source notes for lisa-wiki ingest via the Atlassian MCP. Use only when lisa-wiki-ingest routes to the jira connector. Read-only; tenant-guarded.
4
+ ---
5
+
6
+ # lisa-wiki-connector-jira
7
+
8
+ Skill-driven connector (Atlassian MCP). Writes ONLY source notes under `wiki/sources/jira/` and emits
9
+ a proposed cursor; the kernel does synthesis/index/log/verify/state/PR.
10
+
11
+ ## Flow
12
+ 1. Confirm `connectors.jira.enabled` and `sideEffects: read-only-ingest`.
13
+ 2. **Tenant guard:** verify the active Atlassian connection resolves to
14
+ `connectors.jira.tenantGuard.site` / `cloudId`. If it resolves to a different account/tenant,
15
+ **abort** (do not ingest) — this is the cross-tenant contamination guard.
16
+ 3. **Window:** read `wiki/state/jira/*.json`. First run → last 4 months (or configured window);
17
+ incremental → issues `updated >=` the cursor watermark. Scope to `connectors.jira.projects[]`.
18
+ 4. **Fetch (read-only)** via the Atlassian MCP (JQL search + issue read). Never write to JIRA.
19
+ 5. **Write source notes** under `wiki/sources/jira/<YYYY-MM-DD>-jira-ingest.md` — reader-safe, with
20
+ frontmatter (`type: source`, dates, `source_system: jira`) and citations (`Source: <issue key>`).
21
+ Redact secrets; honor `sourceRetention`/`sensitivity`.
22
+ 6. **Emit run metadata** (proposed cursor: latest `updated` watermark, counts) to the handoff file,
23
+ then return to `lisa-wiki-ingest`.
24
+
25
+ ## Rules
26
+ - Abort on tenant mismatch; never invent issues/PRs/people; weak evidence → open-questions.
27
+ - If the Atlassian MCP is absent, the connector is disabled (see `scripts/mcp-doctor.mjs`).
28
+ - Writes only source notes + handoff meta; the kernel advances state.
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: lisa-wiki-connector-memory
3
+ description: Ingest the agent's PROJECT-SCOPED memory into a sanitized source note. Use only when lisa-wiki-ingest routes to the memory connector. NEVER ingests global or unrelated memory — global Codex memory and the Chronicle store are refused.
4
+ ---
5
+
6
+ # lisa-wiki-connector-memory
7
+
8
+ A universal connector backed by `scripts/ingest-memory.mjs`. **Project-scoped only.**
9
+
10
+ ## Resolve the memory directory (then pass it explicitly)
11
+ - **Claude**: per-project memory at `~/.claude/projects/<encoded-project-path>/memory/` — inherently
12
+ project-scoped; always eligible.
13
+ - **Codex**: eligible ONLY if a project-scoped memory store exists (e.g. a per-project `CODEX_HOME`).
14
+ The global `~/.codex/memories/` and the Chronicle store are **never** ingested (the script
15
+ hard-refuses them).
16
+
17
+ ## Flow
18
+ ```
19
+ node "${PLUGIN_ROOT}/scripts/ingest-memory.mjs" --memory-dir <project-scoped-dir> \
20
+ --config wiki/lisa-wiki.config.json --source-dir wiki/sources/memory \
21
+ --state wiki/state/memory/memory.json --emit-meta wiki/state/handoff/memory-<runId>.json
22
+ ```
23
+ Hand the source note + proposed cursor back to `lisa-wiki-ingest`.
24
+
25
+ ## Rules
26
+ - Secrets are redacted; sensitivity is at least `internal`.
27
+ - If no project-scoped memory exists, ingest nothing rather than reaching for global memory.
28
+ - Writes only its source note + handoff meta; the kernel advances state.
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: lisa-wiki-connector-notion
3
+ description: Produce sanitized Notion source notes for lisa-wiki ingest via the Notion MCP. Use only when lisa-wiki-ingest routes to the notion connector. Read-only; teamspace-guarded.
4
+ ---
5
+
6
+ # lisa-wiki-connector-notion
7
+
8
+ Skill-driven connector (Notion MCP). Writes ONLY source notes under `wiki/sources/notion/` and emits a
9
+ proposed cursor; the kernel does the rest.
10
+
11
+ ## Flow
12
+ 1. Confirm `connectors.notion.enabled` and `sideEffects: read-only-ingest`.
13
+ 2. **Tenant guard:** verify the Notion connection resolves to
14
+ `connectors.notion.tenantGuard.teamspace` / `teamspaceId`. Abort on a different workspace/teamspace.
15
+ 3. **Window:** read `wiki/state/notion/*.json`. First run → configured window; incremental → pages
16
+ edited since the cursor.
17
+ 4. **Fetch (read-only)** via the Notion MCP. Never edit Notion.
18
+ 5. **Write source notes** under `wiki/sources/notion/<YYYY-MM-DD>-notion-ingest.md` with frontmatter
19
+ and citations (`Source: <notion page>`). Redact secrets; honor retention/sensitivity.
20
+ 6. **Emit run metadata** (proposed cursor, counts) to the handoff file; return to `lisa-wiki-ingest`.
21
+
22
+ ## Rules
23
+ - Abort on teamspace mismatch; do not invent pages; weak evidence → open-questions.
24
+ - Disabled if the Notion MCP is absent (`scripts/mcp-doctor.mjs`).
25
+ - Writes only source notes + handoff meta; the kernel advances state.
@@ -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) |