@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.
- package/.claude-plugin/marketplace.json +12 -0
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/rules/config-resolution.md +32 -1
- package/plugins/lisa/skills/atlassian-access/SKILL.md +32 -1
- package/plugins/lisa/skills/notion-access/SKILL.md +32 -1
- package/plugins/lisa/skills/setup-atlassian/SKILL.md +32 -1
- package/plugins/lisa/skills/setup-linear/SKILL.md +32 -1
- package/plugins/lisa/skills/setup-notion/SKILL.md +32 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +8 -0
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +32 -0
- package/plugins/lisa-wiki/ci/lisa-wiki-validate.yml +32 -0
- package/plugins/lisa-wiki/commands/add-ingest.md +6 -0
- package/plugins/lisa-wiki/commands/add-role.md +6 -0
- package/plugins/lisa-wiki/commands/doctor.md +6 -0
- package/plugins/lisa-wiki/commands/ingest.md +6 -0
- package/plugins/lisa-wiki/commands/lint.md +6 -0
- package/plugins/lisa-wiki/commands/migrate.md +6 -0
- package/plugins/lisa-wiki/commands/onboard-me.md +6 -0
- package/plugins/lisa-wiki/commands/query.md +6 -0
- package/plugins/lisa-wiki/commands/setup.md +6 -0
- package/plugins/lisa-wiki/schema/lisa-wiki-config.schema.json +118 -0
- package/plugins/lisa-wiki/schema/wiki-structure.schema.json +51 -0
- package/plugins/lisa-wiki/scripts/_wiki-lib.mjs +185 -0
- package/plugins/lisa-wiki/scripts/diff-guard.mjs +116 -0
- package/plugins/lisa-wiki/scripts/ingest-git.mjs +189 -0
- package/plugins/lisa-wiki/scripts/ingest-memory.mjs +130 -0
- package/plugins/lisa-wiki/scripts/ingest-roles.mjs +85 -0
- package/plugins/lisa-wiki/scripts/ingest_slack_channel.py +329 -0
- package/plugins/lisa-wiki/scripts/lint-wiki.mjs +320 -0
- package/plugins/lisa-wiki/scripts/mcp-doctor.mjs +72 -0
- package/plugins/lisa-wiki/scripts/render-contract.mjs +107 -0
- package/plugins/lisa-wiki/scripts/rewrite-refs.mjs +144 -0
- package/plugins/lisa-wiki/scripts/slack_oauth_user.py +179 -0
- package/plugins/lisa-wiki/scripts/validate-config.mjs +232 -0
- package/plugins/lisa-wiki/scripts/verify-migration.mjs +199 -0
- package/plugins/lisa-wiki/skills/lisa-wiki-add-ingest/SKILL.md +34 -0
- package/plugins/lisa-wiki/skills/lisa-wiki-add-role/SKILL.md +30 -0
- package/plugins/lisa-wiki/skills/lisa-wiki-connector-confluence/SKILL.md +25 -0
- package/plugins/lisa-wiki/skills/lisa-wiki-connector-docs/SKILL.md +30 -0
- package/plugins/lisa-wiki/skills/lisa-wiki-connector-git/SKILL.md +25 -0
- package/plugins/lisa-wiki/skills/lisa-wiki-connector-jira/SKILL.md +28 -0
- package/plugins/lisa-wiki/skills/lisa-wiki-connector-memory/SKILL.md +28 -0
- package/plugins/lisa-wiki/skills/lisa-wiki-connector-notion/SKILL.md +25 -0
- package/plugins/lisa-wiki/skills/lisa-wiki-connector-roles/SKILL.md +22 -0
- package/plugins/lisa-wiki/skills/lisa-wiki-connector-slack/SKILL.md +30 -0
- package/plugins/lisa-wiki/skills/lisa-wiki-connector-web/SKILL.md +23 -0
- package/plugins/lisa-wiki/skills/lisa-wiki-doctor/SKILL.md +47 -0
- package/plugins/lisa-wiki/skills/lisa-wiki-ingest/SKILL.md +43 -0
- package/plugins/lisa-wiki/skills/lisa-wiki-lint/SKILL.md +32 -0
- package/plugins/lisa-wiki/skills/lisa-wiki-migrate/SKILL.md +43 -0
- package/plugins/lisa-wiki/skills/lisa-wiki-onboard-me/SKILL.md +33 -0
- package/plugins/lisa-wiki/skills/lisa-wiki-query/SKILL.md +30 -0
- package/plugins/lisa-wiki/skills/lisa-wiki-setup/SKILL.md +45 -0
- package/plugins/lisa-wiki/skills/lisa-wiki-usage/SKILL.md +50 -0
- package/plugins/lisa-wiki/templates/agents/role-agent.claude.md +16 -0
- package/plugins/lisa-wiki/templates/agents/role-agent.codex.toml +15 -0
- package/plugins/lisa-wiki/templates/index.md +17 -0
- package/plugins/lisa-wiki/templates/llm-wiki-contract.md +60 -0
- package/plugins/lisa-wiki/templates/log.md +8 -0
- package/plugins/lisa-wiki/templates/page-types/architecture.md +18 -0
- package/plugins/lisa-wiki/templates/page-types/concept.md +18 -0
- package/plugins/lisa-wiki/templates/page-types/decision.md +18 -0
- package/plugins/lisa-wiki/templates/page-types/entity.md +19 -0
- package/plugins/lisa-wiki/templates/page-types/open-question.md +18 -0
- package/plugins/lisa-wiki/templates/page-types/playbook.md +18 -0
- package/plugins/lisa-wiki/templates/page-types/project.md +19 -0
- package/plugins/lisa-wiki/templates/page-types/requirement.md +19 -0
- package/plugins/lisa-wiki/templates/page-types/staff.md +26 -0
- package/plugins/lisa-wiki/templates/start-here.md +24 -0
- package/plugins/lisa-wiki/templates/state-readme.md +20 -0
- package/plugins/src/base/rules/config-resolution.md +32 -1
- package/plugins/src/base/skills/atlassian-access/SKILL.md +32 -1
- package/plugins/src/base/skills/notion-access/SKILL.md +32 -1
- package/plugins/src/base/skills/setup-atlassian/SKILL.md +32 -1
- package/plugins/src/base/skills/setup-linear/SKILL.md +32 -1
- package/plugins/src/base/skills/setup-notion/SKILL.md +32 -1
- package/plugins/src/wiki/.claude-plugin/plugin.json +6 -0
- package/plugins/src/wiki/ci/lisa-wiki-validate.yml +32 -0
- package/plugins/src/wiki/commands/add-ingest.md +6 -0
- package/plugins/src/wiki/commands/add-role.md +6 -0
- package/plugins/src/wiki/commands/doctor.md +6 -0
- package/plugins/src/wiki/commands/ingest.md +6 -0
- package/plugins/src/wiki/commands/lint.md +6 -0
- package/plugins/src/wiki/commands/migrate.md +6 -0
- package/plugins/src/wiki/commands/onboard-me.md +6 -0
- package/plugins/src/wiki/commands/query.md +6 -0
- package/plugins/src/wiki/commands/setup.md +6 -0
- package/plugins/src/wiki/schema/lisa-wiki-config.schema.json +118 -0
- package/plugins/src/wiki/schema/wiki-structure.schema.json +51 -0
- package/plugins/src/wiki/scripts/_wiki-lib.mjs +185 -0
- package/plugins/src/wiki/scripts/diff-guard.mjs +116 -0
- package/plugins/src/wiki/scripts/ingest-git.mjs +189 -0
- package/plugins/src/wiki/scripts/ingest-memory.mjs +130 -0
- package/plugins/src/wiki/scripts/ingest-roles.mjs +85 -0
- package/plugins/src/wiki/scripts/ingest_slack_channel.py +329 -0
- package/plugins/src/wiki/scripts/lint-wiki.mjs +320 -0
- package/plugins/src/wiki/scripts/mcp-doctor.mjs +72 -0
- package/plugins/src/wiki/scripts/render-contract.mjs +107 -0
- package/plugins/src/wiki/scripts/rewrite-refs.mjs +144 -0
- package/plugins/src/wiki/scripts/slack_oauth_user.py +179 -0
- package/plugins/src/wiki/scripts/validate-config.mjs +232 -0
- package/plugins/src/wiki/scripts/verify-migration.mjs +199 -0
- package/plugins/src/wiki/skills/lisa-wiki-add-ingest/SKILL.md +34 -0
- package/plugins/src/wiki/skills/lisa-wiki-add-role/SKILL.md +30 -0
- package/plugins/src/wiki/skills/lisa-wiki-connector-confluence/SKILL.md +25 -0
- package/plugins/src/wiki/skills/lisa-wiki-connector-docs/SKILL.md +30 -0
- package/plugins/src/wiki/skills/lisa-wiki-connector-git/SKILL.md +25 -0
- package/plugins/src/wiki/skills/lisa-wiki-connector-jira/SKILL.md +28 -0
- package/plugins/src/wiki/skills/lisa-wiki-connector-memory/SKILL.md +28 -0
- package/plugins/src/wiki/skills/lisa-wiki-connector-notion/SKILL.md +25 -0
- package/plugins/src/wiki/skills/lisa-wiki-connector-roles/SKILL.md +22 -0
- package/plugins/src/wiki/skills/lisa-wiki-connector-slack/SKILL.md +30 -0
- package/plugins/src/wiki/skills/lisa-wiki-connector-web/SKILL.md +23 -0
- package/plugins/src/wiki/skills/lisa-wiki-doctor/SKILL.md +47 -0
- package/plugins/src/wiki/skills/lisa-wiki-ingest/SKILL.md +43 -0
- package/plugins/src/wiki/skills/lisa-wiki-lint/SKILL.md +32 -0
- package/plugins/src/wiki/skills/lisa-wiki-migrate/SKILL.md +43 -0
- package/plugins/src/wiki/skills/lisa-wiki-onboard-me/SKILL.md +33 -0
- package/plugins/src/wiki/skills/lisa-wiki-query/SKILL.md +30 -0
- package/plugins/src/wiki/skills/lisa-wiki-setup/SKILL.md +45 -0
- package/plugins/src/wiki/skills/lisa-wiki-usage/SKILL.md +50 -0
- package/plugins/src/wiki/templates/agents/role-agent.claude.md +16 -0
- package/plugins/src/wiki/templates/agents/role-agent.codex.toml +15 -0
- package/plugins/src/wiki/templates/index.md +17 -0
- package/plugins/src/wiki/templates/llm-wiki-contract.md +60 -0
- package/plugins/src/wiki/templates/log.md +8 -0
- package/plugins/src/wiki/templates/page-types/architecture.md +18 -0
- package/plugins/src/wiki/templates/page-types/concept.md +18 -0
- package/plugins/src/wiki/templates/page-types/decision.md +18 -0
- package/plugins/src/wiki/templates/page-types/entity.md +19 -0
- package/plugins/src/wiki/templates/page-types/open-question.md +18 -0
- package/plugins/src/wiki/templates/page-types/playbook.md +18 -0
- package/plugins/src/wiki/templates/page-types/project.md +19 -0
- package/plugins/src/wiki/templates/page-types/requirement.md +19 -0
- package/plugins/src/wiki/templates/page-types/staff.md +26 -0
- package/plugins/src/wiki/templates/start-here.md +24 -0
- package/plugins/src/wiki/templates/state-readme.md +20 -0
- package/scripts/build-plugins.sh +29 -21
- package/scripts/check-plugins-sync.sh +38 -1
- package/scripts/generate-codex-plugin-artifacts.mjs +22 -0
|
@@ -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,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
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: project
|
|
3
|
+
created: {{date}}
|
|
4
|
+
updated: {{date}}
|
|
5
|
+
related: []
|
|
6
|
+
sources: []
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# {{title}}
|
|
10
|
+
|
|
11
|
+
## Repository
|
|
12
|
+
<!-- | Field | Value | : local path, remote, default branch, HEAD, status -->
|
|
13
|
+
|
|
14
|
+
## Technology signals
|
|
15
|
+
|
|
16
|
+
## Structure signals
|
|
17
|
+
|
|
18
|
+
## Notes & evidence
|
|
19
|
+
<!-- Cite source notes, e.g. PR #/commit -->
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: requirement
|
|
3
|
+
created: {{date}}
|
|
4
|
+
updated: {{date}}
|
|
5
|
+
related: []
|
|
6
|
+
sources: []
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# {{title}}
|
|
10
|
+
|
|
11
|
+
## Summary
|
|
12
|
+
|
|
13
|
+
## Acceptance criteria
|
|
14
|
+
<!-- Gherkin: Given / When / Then -->
|
|
15
|
+
|
|
16
|
+
## Out of scope
|
|
17
|
+
|
|
18
|
+
## Notes & evidence
|
|
19
|
+
<!-- Cite source notes -->
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: staff
|
|
3
|
+
created: {{date}}
|
|
4
|
+
updated: {{date}}
|
|
5
|
+
related: []
|
|
6
|
+
sources: []
|
|
7
|
+
sensitivity: {{sensitivity}}
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# {{role}} ({{id}})
|
|
11
|
+
|
|
12
|
+
## Role
|
|
13
|
+
<!-- Human or Agent; what this role is responsible for -->
|
|
14
|
+
|
|
15
|
+
## Domain
|
|
16
|
+
Owned categories: {{ownedCategories}}
|
|
17
|
+
Owned connectors: {{ownedConnectors}}
|
|
18
|
+
|
|
19
|
+
## Expertise
|
|
20
|
+
{{expertise}}
|
|
21
|
+
|
|
22
|
+
## Reports to
|
|
23
|
+
|
|
24
|
+
## Notes
|
|
25
|
+
<!-- The runnable subagent for this role lives at .claude/agents/{{id}}.md and .codex/agents/{{id}}.toml.
|
|
26
|
+
Whether it is ever invoked/scheduled is out of scope for the wiki. -->
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Start here — {{displayName}}
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
{{purpose}}
|
|
5
|
+
|
|
6
|
+
## What this is
|
|
7
|
+
A git-native LLM Wiki owned by **{{org}}** and maintained by the `lisa-wiki` kernel. It is the
|
|
8
|
+
durable home for this project's knowledge (and documentation). Raw sources are preserved under
|
|
9
|
+
`{{wikiRoot}}/sources/`; distilled knowledge lives in the category pages; the rules are in
|
|
10
|
+
`{{wikiRoot}}/schema/llm-wiki-contract.md`.
|
|
11
|
+
|
|
12
|
+
## How to use it
|
|
13
|
+
- **New here?** Run `/onboard-me` (Codex: `$lisa-wiki-onboard-me`) for a guided tour + sample questions.
|
|
14
|
+
- **Find/answer something:** `/query "<question>"` — cited answers from the wiki.
|
|
15
|
+
- **Add knowledge:** `/ingest <url|file|prompt>` (Codex: `$lisa-wiki-ingest`), or `/ingest` with no
|
|
16
|
+
argument for a full ingest across all enabled non-external-write sources (external-write sources
|
|
17
|
+
require explicit intent).
|
|
18
|
+
- **Browse:** [index.md](index.md).
|
|
19
|
+
- **Check health:** `/lint`.
|
|
20
|
+
|
|
21
|
+
## Map
|
|
22
|
+
Synthesis categories: {{categories}}.
|
|
23
|
+
Sources: `{{wikiRoot}}/sources/` · State: `{{wikiRoot}}/state/` · Contract:
|
|
24
|
+
`{{wikiRoot}}/schema/llm-wiki-contract.md` · Log: `{{wikiRoot}}/log.md`.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# state/ — ingestion cursors
|
|
2
|
+
|
|
3
|
+
JSON cursors that let ingestion resume incrementally — one file per source/connector at
|
|
4
|
+
`state/<system>/*.json`. A cursor is advanced **only after** its source notes + synthesis + index +
|
|
5
|
+
log + verification all pass (never before). Common envelope:
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"connector": "git",
|
|
10
|
+
"profile": "default",
|
|
11
|
+
"lastSuccessfulRunAt": "1970-01-01T00:00:00Z",
|
|
12
|
+
"cursor": {},
|
|
13
|
+
"sourceNotes": [],
|
|
14
|
+
"synthesisPages": [],
|
|
15
|
+
"schemaVersion": "1.0.0"
|
|
16
|
+
}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
The post-migration / post-setup verification report is written to
|
|
20
|
+
`state/migration/doctor-report.json` by `/doctor`.
|
|
@@ -341,7 +341,38 @@ read_notion_token() {
|
|
|
341
341
|
Darwin) security find-generic-password -s lisa-notion -a "$workspace" -w 2>/dev/null ;;
|
|
342
342
|
Linux) command -v secret-tool >/dev/null && \
|
|
343
343
|
secret-tool lookup service lisa-notion account "$workspace" 2>/dev/null ;;
|
|
344
|
-
MINGW*|MSYS*|CYGWIN*)
|
|
344
|
+
MINGW*|MSYS*|CYGWIN*)
|
|
345
|
+
# `cmdkey /generic ... /pass:` stores the secret in Windows Credential Manager, but
|
|
346
|
+
# `cmdkey /list` never prints stored passwords (by design). Read the CredentialBlob
|
|
347
|
+
# back via the Win32 CredRead API through PowerShell; pass the target name via an env
|
|
348
|
+
# var to dodge nested quoting, and strip the CRLF powershell.exe appends.
|
|
349
|
+
LISA_CRED_TARGET="lisa-notion-${workspace}" powershell.exe -NoProfile -NonInteractive -Command '
|
|
350
|
+
Add-Type -TypeDefinition @"
|
|
351
|
+
using System;
|
|
352
|
+
using System.Runtime.InteropServices;
|
|
353
|
+
public static class LisaCred {
|
|
354
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
355
|
+
private struct CREDENTIAL {
|
|
356
|
+
public int Flags; public int Type; public IntPtr TargetName; public IntPtr Comment;
|
|
357
|
+
public System.Runtime.InteropServices.ComTypes.FILETIME LastWritten;
|
|
358
|
+
public int CredentialBlobSize; public IntPtr CredentialBlob; public int Persist;
|
|
359
|
+
public int AttributeCount; public IntPtr Attributes; public IntPtr TargetAlias; public IntPtr UserName;
|
|
360
|
+
}
|
|
361
|
+
[DllImport("advapi32.dll", CharSet=CharSet.Unicode, SetLastError=true)]
|
|
362
|
+
private static extern bool CredRead(string target, int type, int flags, out IntPtr credential);
|
|
363
|
+
[DllImport("advapi32.dll")] private static extern void CredFree(IntPtr cred);
|
|
364
|
+
public static string Read(string target) {
|
|
365
|
+
IntPtr p;
|
|
366
|
+
if (!CredRead(target, 1, 0, out p)) { return null; }
|
|
367
|
+
try {
|
|
368
|
+
CREDENTIAL c = (CREDENTIAL)Marshal.PtrToStructure(p, typeof(CREDENTIAL));
|
|
369
|
+
if (c.CredentialBlobSize == 0) { return String.Empty; }
|
|
370
|
+
return Marshal.PtrToStringUni(c.CredentialBlob, c.CredentialBlobSize / 2);
|
|
371
|
+
} finally { CredFree(p); }
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
"@
|
|
375
|
+
[LisaCred]::Read($env:LISA_CRED_TARGET)' 2>/dev/null | tr -d '\r' ;;
|
|
345
376
|
esac
|
|
346
377
|
}
|
|
347
378
|
```
|
|
@@ -79,7 +79,38 @@ read_atlassian_token() {
|
|
|
79
79
|
case "$(uname -s)" in
|
|
80
80
|
Darwin) security find-generic-password -s lisa-atlassian -a "$email" -w 2>/dev/null ;;
|
|
81
81
|
Linux) command -v secret-tool >/dev/null && secret-tool lookup service lisa-atlassian account "$email" 2>/dev/null ;;
|
|
82
|
-
MINGW*|MSYS*|CYGWIN*)
|
|
82
|
+
MINGW*|MSYS*|CYGWIN*)
|
|
83
|
+
# `cmdkey /generic ... /pass:` stores the secret in Windows Credential Manager, but
|
|
84
|
+
# `cmdkey /list` never prints stored passwords (by design). Read the CredentialBlob
|
|
85
|
+
# back via the Win32 CredRead API through PowerShell; pass the target name via an env
|
|
86
|
+
# var to dodge nested quoting, and strip the CRLF powershell.exe appends.
|
|
87
|
+
LISA_CRED_TARGET="lisa-atlassian-${email}" powershell.exe -NoProfile -NonInteractive -Command '
|
|
88
|
+
Add-Type -TypeDefinition @"
|
|
89
|
+
using System;
|
|
90
|
+
using System.Runtime.InteropServices;
|
|
91
|
+
public static class LisaCred {
|
|
92
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
93
|
+
private struct CREDENTIAL {
|
|
94
|
+
public int Flags; public int Type; public IntPtr TargetName; public IntPtr Comment;
|
|
95
|
+
public System.Runtime.InteropServices.ComTypes.FILETIME LastWritten;
|
|
96
|
+
public int CredentialBlobSize; public IntPtr CredentialBlob; public int Persist;
|
|
97
|
+
public int AttributeCount; public IntPtr Attributes; public IntPtr TargetAlias; public IntPtr UserName;
|
|
98
|
+
}
|
|
99
|
+
[DllImport("advapi32.dll", CharSet=CharSet.Unicode, SetLastError=true)]
|
|
100
|
+
private static extern bool CredRead(string target, int type, int flags, out IntPtr credential);
|
|
101
|
+
[DllImport("advapi32.dll")] private static extern void CredFree(IntPtr cred);
|
|
102
|
+
public static string Read(string target) {
|
|
103
|
+
IntPtr p;
|
|
104
|
+
if (!CredRead(target, 1, 0, out p)) { return null; }
|
|
105
|
+
try {
|
|
106
|
+
CREDENTIAL c = (CREDENTIAL)Marshal.PtrToStructure(p, typeof(CREDENTIAL));
|
|
107
|
+
if (c.CredentialBlobSize == 0) { return String.Empty; }
|
|
108
|
+
return Marshal.PtrToStringUni(c.CredentialBlob, c.CredentialBlobSize / 2);
|
|
109
|
+
} finally { CredFree(p); }
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
"@
|
|
113
|
+
[LisaCred]::Read($env:LISA_CRED_TARGET)' 2>/dev/null | tr -d '\r' ;;
|
|
83
114
|
esac
|
|
84
115
|
}
|
|
85
116
|
TOKEN=$(read_atlassian_token "$EMAIL")
|
|
@@ -61,7 +61,38 @@ read_notion_token() {
|
|
|
61
61
|
Darwin) security find-generic-password -s lisa-notion -a "$workspace" -w 2>/dev/null ;;
|
|
62
62
|
Linux) command -v secret-tool >/dev/null && \
|
|
63
63
|
secret-tool lookup service lisa-notion account "$workspace" 2>/dev/null ;;
|
|
64
|
-
MINGW*|MSYS*|CYGWIN*)
|
|
64
|
+
MINGW*|MSYS*|CYGWIN*)
|
|
65
|
+
# `cmdkey /generic ... /pass:` stores the secret in Windows Credential Manager, but
|
|
66
|
+
# `cmdkey /list` never prints stored passwords (by design). Read the CredentialBlob
|
|
67
|
+
# back via the Win32 CredRead API through PowerShell; pass the target name via an env
|
|
68
|
+
# var to dodge nested quoting, and strip the CRLF powershell.exe appends.
|
|
69
|
+
LISA_CRED_TARGET="lisa-notion-${workspace}" powershell.exe -NoProfile -NonInteractive -Command '
|
|
70
|
+
Add-Type -TypeDefinition @"
|
|
71
|
+
using System;
|
|
72
|
+
using System.Runtime.InteropServices;
|
|
73
|
+
public static class LisaCred {
|
|
74
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
75
|
+
private struct CREDENTIAL {
|
|
76
|
+
public int Flags; public int Type; public IntPtr TargetName; public IntPtr Comment;
|
|
77
|
+
public System.Runtime.InteropServices.ComTypes.FILETIME LastWritten;
|
|
78
|
+
public int CredentialBlobSize; public IntPtr CredentialBlob; public int Persist;
|
|
79
|
+
public int AttributeCount; public IntPtr Attributes; public IntPtr TargetAlias; public IntPtr UserName;
|
|
80
|
+
}
|
|
81
|
+
[DllImport("advapi32.dll", CharSet=CharSet.Unicode, SetLastError=true)]
|
|
82
|
+
private static extern bool CredRead(string target, int type, int flags, out IntPtr credential);
|
|
83
|
+
[DllImport("advapi32.dll")] private static extern void CredFree(IntPtr cred);
|
|
84
|
+
public static string Read(string target) {
|
|
85
|
+
IntPtr p;
|
|
86
|
+
if (!CredRead(target, 1, 0, out p)) { return null; }
|
|
87
|
+
try {
|
|
88
|
+
CREDENTIAL c = (CREDENTIAL)Marshal.PtrToStructure(p, typeof(CREDENTIAL));
|
|
89
|
+
if (c.CredentialBlobSize == 0) { return String.Empty; }
|
|
90
|
+
return Marshal.PtrToStringUni(c.CredentialBlob, c.CredentialBlobSize / 2);
|
|
91
|
+
} finally { CredFree(p); }
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
"@
|
|
95
|
+
[LisaCred]::Read($env:LISA_CRED_TARGET)' 2>/dev/null | tr -d '\r' ;;
|
|
65
96
|
esac
|
|
66
97
|
}
|
|
67
98
|
TOKEN=$(read_notion_token "$WORKSPACE")
|
|
@@ -80,7 +80,38 @@ read_token() {
|
|
|
80
80
|
case "$(uname -s)" in
|
|
81
81
|
Darwin) security find-generic-password -s lisa-atlassian -a "$email" -w 2>/dev/null ;;
|
|
82
82
|
Linux) command -v secret-tool >/dev/null && secret-tool lookup service lisa-atlassian account "$email" 2>/dev/null ;;
|
|
83
|
-
MINGW*|MSYS*|CYGWIN*)
|
|
83
|
+
MINGW*|MSYS*|CYGWIN*)
|
|
84
|
+
# `cmdkey /generic ... /pass:` stores the secret in Windows Credential Manager, but
|
|
85
|
+
# `cmdkey /list` never prints stored passwords (by design). Read the CredentialBlob
|
|
86
|
+
# back via the Win32 CredRead API through PowerShell; pass the target name via an env
|
|
87
|
+
# var to dodge nested quoting, and strip the CRLF powershell.exe appends.
|
|
88
|
+
LISA_CRED_TARGET="lisa-atlassian-${email}" powershell.exe -NoProfile -NonInteractive -Command '
|
|
89
|
+
Add-Type -TypeDefinition @"
|
|
90
|
+
using System;
|
|
91
|
+
using System.Runtime.InteropServices;
|
|
92
|
+
public static class LisaCred {
|
|
93
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
94
|
+
private struct CREDENTIAL {
|
|
95
|
+
public int Flags; public int Type; public IntPtr TargetName; public IntPtr Comment;
|
|
96
|
+
public System.Runtime.InteropServices.ComTypes.FILETIME LastWritten;
|
|
97
|
+
public int CredentialBlobSize; public IntPtr CredentialBlob; public int Persist;
|
|
98
|
+
public int AttributeCount; public IntPtr Attributes; public IntPtr TargetAlias; public IntPtr UserName;
|
|
99
|
+
}
|
|
100
|
+
[DllImport("advapi32.dll", CharSet=CharSet.Unicode, SetLastError=true)]
|
|
101
|
+
private static extern bool CredRead(string target, int type, int flags, out IntPtr credential);
|
|
102
|
+
[DllImport("advapi32.dll")] private static extern void CredFree(IntPtr cred);
|
|
103
|
+
public static string Read(string target) {
|
|
104
|
+
IntPtr p;
|
|
105
|
+
if (!CredRead(target, 1, 0, out p)) { return null; }
|
|
106
|
+
try {
|
|
107
|
+
CREDENTIAL c = (CREDENTIAL)Marshal.PtrToStructure(p, typeof(CREDENTIAL));
|
|
108
|
+
if (c.CredentialBlobSize == 0) { return String.Empty; }
|
|
109
|
+
return Marshal.PtrToStringUni(c.CredentialBlob, c.CredentialBlobSize / 2);
|
|
110
|
+
} finally { CredFree(p); }
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
"@
|
|
114
|
+
[LisaCred]::Read($env:LISA_CRED_TARGET)' 2>/dev/null | tr -d '\r' ;;
|
|
84
115
|
esac
|
|
85
116
|
}
|
|
86
117
|
|
|
@@ -85,7 +85,38 @@ read_linear_key() { # $1=workspace slug
|
|
|
85
85
|
case "$(uname -s)" in
|
|
86
86
|
Darwin) security find-generic-password -s lisa-linear -a "$ws" -w 2>/dev/null ;;
|
|
87
87
|
Linux) command -v secret-tool >/dev/null && secret-tool lookup service lisa-linear account "$ws" 2>/dev/null ;;
|
|
88
|
-
MINGW*|MSYS*|CYGWIN*)
|
|
88
|
+
MINGW*|MSYS*|CYGWIN*)
|
|
89
|
+
# `cmdkey /generic ... /pass:` stores the secret in Windows Credential Manager, but
|
|
90
|
+
# `cmdkey /list` never prints stored passwords (by design). Read the CredentialBlob
|
|
91
|
+
# back via the Win32 CredRead API through PowerShell; pass the target name via an env
|
|
92
|
+
# var to dodge nested quoting, and strip the CRLF powershell.exe appends.
|
|
93
|
+
LISA_CRED_TARGET="lisa-linear-${ws}" powershell.exe -NoProfile -NonInteractive -Command '
|
|
94
|
+
Add-Type -TypeDefinition @"
|
|
95
|
+
using System;
|
|
96
|
+
using System.Runtime.InteropServices;
|
|
97
|
+
public static class LisaCred {
|
|
98
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
99
|
+
private struct CREDENTIAL {
|
|
100
|
+
public int Flags; public int Type; public IntPtr TargetName; public IntPtr Comment;
|
|
101
|
+
public System.Runtime.InteropServices.ComTypes.FILETIME LastWritten;
|
|
102
|
+
public int CredentialBlobSize; public IntPtr CredentialBlob; public int Persist;
|
|
103
|
+
public int AttributeCount; public IntPtr Attributes; public IntPtr TargetAlias; public IntPtr UserName;
|
|
104
|
+
}
|
|
105
|
+
[DllImport("advapi32.dll", CharSet=CharSet.Unicode, SetLastError=true)]
|
|
106
|
+
private static extern bool CredRead(string target, int type, int flags, out IntPtr credential);
|
|
107
|
+
[DllImport("advapi32.dll")] private static extern void CredFree(IntPtr cred);
|
|
108
|
+
public static string Read(string target) {
|
|
109
|
+
IntPtr p;
|
|
110
|
+
if (!CredRead(target, 1, 0, out p)) { return null; }
|
|
111
|
+
try {
|
|
112
|
+
CREDENTIAL c = (CREDENTIAL)Marshal.PtrToStructure(p, typeof(CREDENTIAL));
|
|
113
|
+
if (c.CredentialBlobSize == 0) { return String.Empty; }
|
|
114
|
+
return Marshal.PtrToStringUni(c.CredentialBlob, c.CredentialBlobSize / 2);
|
|
115
|
+
} finally { CredFree(p); }
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
"@
|
|
119
|
+
[LisaCred]::Read($env:LISA_CRED_TARGET)' 2>/dev/null | tr -d '\r' ;;
|
|
89
120
|
esac
|
|
90
121
|
}
|
|
91
122
|
|
|
@@ -167,7 +167,38 @@ read_notion_token() {
|
|
|
167
167
|
case "$(uname -s)" in
|
|
168
168
|
Darwin) security find-generic-password -s lisa-notion -a "$workspace" -w 2>/dev/null ;;
|
|
169
169
|
Linux) command -v secret-tool >/dev/null && secret-tool lookup service lisa-notion account "$workspace" 2>/dev/null ;;
|
|
170
|
-
MINGW*|MSYS*|CYGWIN*)
|
|
170
|
+
MINGW*|MSYS*|CYGWIN*)
|
|
171
|
+
# `cmdkey /generic ... /pass:` stores the secret in Windows Credential Manager, but
|
|
172
|
+
# `cmdkey /list` never prints stored passwords (by design). Read the CredentialBlob
|
|
173
|
+
# back via the Win32 CredRead API through PowerShell; pass the target name via an env
|
|
174
|
+
# var to dodge nested quoting, and strip the CRLF powershell.exe appends.
|
|
175
|
+
LISA_CRED_TARGET="lisa-notion-${workspace}" powershell.exe -NoProfile -NonInteractive -Command '
|
|
176
|
+
Add-Type -TypeDefinition @"
|
|
177
|
+
using System;
|
|
178
|
+
using System.Runtime.InteropServices;
|
|
179
|
+
public static class LisaCred {
|
|
180
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
181
|
+
private struct CREDENTIAL {
|
|
182
|
+
public int Flags; public int Type; public IntPtr TargetName; public IntPtr Comment;
|
|
183
|
+
public System.Runtime.InteropServices.ComTypes.FILETIME LastWritten;
|
|
184
|
+
public int CredentialBlobSize; public IntPtr CredentialBlob; public int Persist;
|
|
185
|
+
public int AttributeCount; public IntPtr Attributes; public IntPtr TargetAlias; public IntPtr UserName;
|
|
186
|
+
}
|
|
187
|
+
[DllImport("advapi32.dll", CharSet=CharSet.Unicode, SetLastError=true)]
|
|
188
|
+
private static extern bool CredRead(string target, int type, int flags, out IntPtr credential);
|
|
189
|
+
[DllImport("advapi32.dll")] private static extern void CredFree(IntPtr cred);
|
|
190
|
+
public static string Read(string target) {
|
|
191
|
+
IntPtr p;
|
|
192
|
+
if (!CredRead(target, 1, 0, out p)) { return null; }
|
|
193
|
+
try {
|
|
194
|
+
CREDENTIAL c = (CREDENTIAL)Marshal.PtrToStructure(p, typeof(CREDENTIAL));
|
|
195
|
+
if (c.CredentialBlobSize == 0) { return String.Empty; }
|
|
196
|
+
return Marshal.PtrToStringUni(c.CredentialBlob, c.CredentialBlobSize / 2);
|
|
197
|
+
} finally { CredFree(p); }
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
"@
|
|
201
|
+
[LisaCred]::Read($env:LISA_CRED_TARGET)' 2>/dev/null | tr -d '\r' ;;
|
|
171
202
|
esac
|
|
172
203
|
}
|
|
173
204
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# lisa-wiki validation — OPTIONAL. Installed into a project by `/setup --with-ci`.
|
|
2
|
+
#
|
|
3
|
+
# Runs the deterministic wiki validators on pull requests that touch the wiki.
|
|
4
|
+
# Node-only, no extra dependencies (the validators are dependency-free).
|
|
5
|
+
#
|
|
6
|
+
# LISA_WIKI_SCRIPTS must point at the installed plugin's scripts/ directory.
|
|
7
|
+
# `/setup --with-ci` wires this — either by resolving the installed plugin path or
|
|
8
|
+
# by vendoring the plugin's scripts/ into the repo (default below: .lisa-wiki/scripts).
|
|
9
|
+
name: 🧠 LLM Wiki Validate
|
|
10
|
+
|
|
11
|
+
on:
|
|
12
|
+
pull_request:
|
|
13
|
+
paths:
|
|
14
|
+
- 'wiki/**'
|
|
15
|
+
- '.lisa-wiki/**'
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
validate:
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
env:
|
|
21
|
+
LISA_WIKI_SCRIPTS: ${{ vars.LISA_WIKI_SCRIPTS || '.lisa-wiki/scripts' }}
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@v4
|
|
24
|
+
- uses: actions/setup-node@v4
|
|
25
|
+
with:
|
|
26
|
+
node-version: '22'
|
|
27
|
+
|
|
28
|
+
- name: Validate config
|
|
29
|
+
run: node "$LISA_WIKI_SCRIPTS/validate-config.mjs" wiki/lisa-wiki.config.json
|
|
30
|
+
|
|
31
|
+
- name: Lint wiki (strict — warnings block once the repo is at hard-enforcement)
|
|
32
|
+
run: node "$LISA_WIKI_SCRIPTS/lint-wiki.mjs" --wiki wiki --config wiki/lisa-wiki.config.json --strict
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Scaffold a project-specific front-door ingest skill that does something unique (classify a source, fetch from a special system, stamp domain frontmatter) and then chains into /ingest. Extends ingestion without forking the kernel."
|
|
3
|
+
argument-hint: "<short name for the new ingest path>"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Use the lisa-wiki-add-ingest skill to generate a thin, registered front-door ingest skill: interview the project for the source type, bucket, frontmatter, and side-effect class; emit a lisa-wiki-local-<name> skill that enriches then chains into /ingest; and register it under customConnectors. $ARGUMENTS
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Scaffold a domain-expert digital-staff role over the wiki — a dual-runtime subagent (Claude + Codex) plus a staff doc page — from a config.staff[] entry. The plugin only sets the subagent up; running/scheduling it is out of scope."
|
|
3
|
+
argument-hint: "<role name, e.g. Legal | Finance | Sales>"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Use the lisa-wiki-add-role skill to turn a role into a wiki/staff/<id>.md doc page and brain-pointed subagents on both runtimes (Claude .claude/agents/<id>.md + Codex .codex/agents/<id>.toml), pointed at the role's owned wiki domain. Setup-only — invocation/scheduling/routing is out of scope. $ARGUMENTS
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Verify that the wiki is correctly set up and (after migration) fully functional. Runs deterministic checks plus functional smoke tests, writes a doctor report, and returns an overall verdict (READY / READY_WITH_WARNINGS / NOT_READY). The final gate of /migrate; re-runnable anytime."
|
|
3
|
+
argument-hint: "[--migration]"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Use the lisa-wiki-doctor skill to run the post-migration/post-setup verification checklist: structure & config, integrity & safety, no-loss/parity, runtime surfaces on both runtimes, functional smoke tests (no extra PR), mode-specific, and git/CI/distribution. Write wiki/state/migration/doctor-report.json and report the verdict + blocking items. $ARGUMENTS
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Ingest source material into the LLM Wiki. With an argument (URL, file path, or prompt) ingest that one source; with no argument run a full ingest across every enabled non-external-write source. Routes to the right connector and runs the ordered pipeline (source note → synthesis → index → log → verify → state → commit/PR)."
|
|
3
|
+
argument-hint: "[url | file path | prompt] (omit for a full ingest)"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Use the lisa-wiki-ingest skill to ingest into the wiki: route the input to the right connector (or, with no argument, run a full ingest across all enabled non-external-write sources), then run the ordered pipeline — sanitized source note, synthesis with citations, index, log, verification, and state advancement, then commit/PR per policy. $ARGUMENTS
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Health-check the LLM Wiki: orphan pages, contradictions, stale claims, broken internal links, missing index/log coverage, structure violations, and secret/tenant leaks. Read-only — reports findings, does not fix them."
|
|
3
|
+
argument-hint: ""
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Use the lisa-wiki-lint skill to run the wiki's integrity checks and report findings by severity (PASS/WARN/FAIL). It diagnoses only — fixes go through /ingest, /setup, or /migrate. $ARGUMENTS
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Migrate an existing hand-rolled wiki onto the lisa-wiki kernel — phased and compatibility-first, with a strict no-loss guarantee (renaming is fine; losing functionality or data is not). Ends by running /doctor."
|
|
3
|
+
argument-hint: "[--phase <0|1|1b|2|3|4|5>]"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Use the lisa-wiki-migrate skill to move this repo's bespoke wiki onto the kernel in reviewable phases: inventory, adopt kernel, absorb documentation, consolidate runtime + connectors, normalize by touch, then hard-enforce — parity-checking each migrated artifact before deleting the old one, and finishing with /doctor. $ARGUMENTS
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Onboard a user to the project via its LLM Wiki: interview them about themselves in relation to the project, then give a guided tour and sample questions. Read-mostly by default (session-local); --save-memory persists the capture to project-scoped memory only. No PRs, no PII written into the wiki, never global memory."
|
|
3
|
+
argument-hint: "[--save-memory] [--write-audience-note]"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Use the lisa-wiki-onboard-me skill to onboard the user: briefly interview their role and goals (read-mostly, session-local by default; with --save-memory persist to project-scoped memory only — never global memory, never PII into the wiki), then summarize what the project is, show the folder map, and offer sample /query prompts tuned to their role. $ARGUMENTS
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
---
|
|
2
|
+
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; files new synthesis back only when explicitly asked."
|
|
3
|
+
argument-hint: "<question>"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Use the lisa-wiki-query skill to answer from the wiki with citations: locate relevant pages via the index, synthesize a cited answer, and say plainly when the wiki cannot support an answer. Read-only unless the user explicitly asks to persist new synthesis. $ARGUMENTS
|