@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`.
|
package/scripts/build-plugins.sh
CHANGED
|
@@ -24,28 +24,36 @@ inject_version() {
|
|
|
24
24
|
fi
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
# Build
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
echo "
|
|
27
|
+
# Build one plugin: copy plugins/src/<src_name> -> plugins/<out_name>, inject the
|
|
28
|
+
# release version into its Claude manifest, then derive the Codex artifacts.
|
|
29
|
+
build_plugin() {
|
|
30
|
+
local src_name="$1"
|
|
31
|
+
local out_name="$2"
|
|
32
|
+
local src="$SRC_DIR/$src_name"
|
|
33
|
+
if [ ! -d "$src" ]; then
|
|
34
|
+
echo "Skipping plugins/$out_name (no source at plugins/src/$src_name)"
|
|
35
|
+
return 0
|
|
36
|
+
fi
|
|
37
|
+
local out="$PLUGINS_DIR/$out_name"
|
|
38
|
+
rm -rf "$out"
|
|
39
|
+
mkdir -p "$out"
|
|
40
|
+
cp -r "$src/." "$out/"
|
|
41
|
+
inject_version "$out/.claude-plugin/plugin.json"
|
|
42
|
+
node "$ROOT_DIR/scripts/generate-codex-plugin-artifacts.mjs" "$out" "$VERSION"
|
|
43
|
+
echo "Built plugins/$out_name (v$VERSION)"
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
# Base plugin
|
|
47
|
+
build_plugin base lisa
|
|
35
48
|
|
|
36
|
-
#
|
|
49
|
+
# Stack-specific plugins (NO base copy)
|
|
37
50
|
STACKS=(typescript expo nestjs cdk harper-fabric rails)
|
|
38
51
|
for stack in "${STACKS[@]}"; do
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
mkdir -p "$OUT"
|
|
47
|
-
cp -r "$STACK_SRC/." "$OUT/"
|
|
48
|
-
inject_version "$OUT/.claude-plugin/plugin.json"
|
|
49
|
-
node "$ROOT_DIR/scripts/generate-codex-plugin-artifacts.mjs" "$OUT" "$VERSION"
|
|
50
|
-
echo "Built plugins/lisa-$stack (v$VERSION)"
|
|
52
|
+
build_plugin "$stack" "lisa-$stack"
|
|
53
|
+
done
|
|
54
|
+
|
|
55
|
+
# Standalone plugins (not language stacks): each builds plugins/src/<name> -> plugins/lisa-<name>
|
|
56
|
+
STANDALONE=(wiki)
|
|
57
|
+
for name in "${STANDALONE[@]}"; do
|
|
58
|
+
build_plugin "$name" "lisa-$name"
|
|
51
59
|
done
|
|
@@ -35,7 +35,7 @@ if ! git diff --quiet -- plugins/; then
|
|
|
35
35
|
echo " overwrites the change." >&2
|
|
36
36
|
echo "" >&2
|
|
37
37
|
echo " Fix:" >&2
|
|
38
|
-
echo " 1. Make your edit under plugins/src/<base|stack>/..." >&2
|
|
38
|
+
echo " 1. Make your edit under plugins/src/<base|stack|standalone (e.g. wiki)>/..." >&2
|
|
39
39
|
echo " 2. Run: bun run build:plugins" >&2
|
|
40
40
|
echo " 3. Commit both plugins/src and the regenerated plugins/lisa*." >&2
|
|
41
41
|
# Leave the tree dirty so the diff is inspectable locally; CI fails on exit.
|
|
@@ -43,3 +43,40 @@ if ! git diff --quiet -- plugins/; then
|
|
|
43
43
|
fi
|
|
44
44
|
|
|
45
45
|
echo "✓ Plugin artifacts are in sync with plugins/src."
|
|
46
|
+
|
|
47
|
+
# Marketplace coverage: every built plugin directory (plugins/lisa, plugins/lisa-*)
|
|
48
|
+
# must be registered in .claude-plugin/marketplace.json, and every marketplace
|
|
49
|
+
# entry must point at a directory that exists. The reproducibility check above
|
|
50
|
+
# only proves artifacts match plugins/src — it does NOT prove a built plugin is
|
|
51
|
+
# actually published. lisa-harper-fabric shipped built-but-unpublished for
|
|
52
|
+
# exactly this reason: install-claude-plugins.sh tried "lisa-harper-fabric@lisa"
|
|
53
|
+
# but the marketplace never advertised it, so resolution failed at install time.
|
|
54
|
+
MARKETPLACE="$ROOT_DIR/.claude-plugin/marketplace.json"
|
|
55
|
+
marketplace_fail=0
|
|
56
|
+
|
|
57
|
+
# Every built plugin dir needs a marketplace entry whose source points to it.
|
|
58
|
+
while IFS= read -r dir; do
|
|
59
|
+
name="$(basename "$dir")"
|
|
60
|
+
if ! jq -e --arg src "./plugins/$name" '.plugins[] | select(.source == $src)' "$MARKETPLACE" >/dev/null; then
|
|
61
|
+
echo "✗ Built plugin plugins/$name is not registered in .claude-plugin/marketplace.json (expected source \"./plugins/$name\")." >&2
|
|
62
|
+
marketplace_fail=1
|
|
63
|
+
fi
|
|
64
|
+
done < <(find "$ROOT_DIR/plugins" -maxdepth 1 -mindepth 1 -type d ! -name src | sort)
|
|
65
|
+
|
|
66
|
+
# Every marketplace entry must point at a directory that exists.
|
|
67
|
+
while IFS= read -r src; do
|
|
68
|
+
if [ ! -d "$ROOT_DIR/$src" ]; then
|
|
69
|
+
echo "✗ marketplace.json entry source \"$src\" does not exist as a built plugin directory." >&2
|
|
70
|
+
marketplace_fail=1
|
|
71
|
+
fi
|
|
72
|
+
done < <(jq -r '.plugins[].source' "$MARKETPLACE")
|
|
73
|
+
|
|
74
|
+
if [ "$marketplace_fail" -ne 0 ]; then
|
|
75
|
+
echo "" >&2
|
|
76
|
+
echo " Every plugins/lisa* directory must be registered in .claude-plugin/marketplace.json" >&2
|
|
77
|
+
echo " and every marketplace source must point to a real built directory. Edit the manifest" >&2
|
|
78
|
+
echo " at .claude-plugin/marketplace.json, then re-run: bun run check:plugins" >&2
|
|
79
|
+
exit 1
|
|
80
|
+
fi
|
|
81
|
+
|
|
82
|
+
echo "✓ Marketplace registers every built plugin."
|
|
@@ -297,6 +297,28 @@ function metadataFor(pluginName) {
|
|
|
297
297
|
"Improve this Rails model",
|
|
298
298
|
],
|
|
299
299
|
},
|
|
300
|
+
"lisa-wiki": {
|
|
301
|
+
displayName: "LLM Wiki",
|
|
302
|
+
description:
|
|
303
|
+
"Distributable LLM Wiki kernel — ingest, query, lint, and maintain a git-native markdown knowledge base across Claude and Codex.",
|
|
304
|
+
shortDescription: "LLM Wiki knowledge base",
|
|
305
|
+
longDescription:
|
|
306
|
+
"A config-driven, git-native LLM Wiki: ingest sources (git, PRs, project-scoped memory, Jira, Slack, docs, …) into durable markdown, query with citations, lint integrity, onboard users, absorb existing documentation, and scaffold domain-expert role subagents. Distributed for both Claude Code and Codex.",
|
|
307
|
+
category: "Productivity",
|
|
308
|
+
capabilities: ["Interactive", "Write"],
|
|
309
|
+
keywords: [
|
|
310
|
+
"wiki",
|
|
311
|
+
"knowledge-base",
|
|
312
|
+
"ingest",
|
|
313
|
+
"documentation",
|
|
314
|
+
"llm-wiki",
|
|
315
|
+
],
|
|
316
|
+
defaultPrompt: [
|
|
317
|
+
"Onboard me to this project",
|
|
318
|
+
"Ingest the latest sources into the wiki",
|
|
319
|
+
"Query the wiki",
|
|
320
|
+
],
|
|
321
|
+
},
|
|
300
322
|
};
|
|
301
323
|
return (
|
|
302
324
|
map[pluginName] ?? {
|