plugins/lisa-wiki-agy/skills/lisa-wiki-ingest/SKILL.md
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.
npx skillsauth add codyswanngt/lisa lisa-wiki-ingestInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
The single entry point for getting knowledge into the wiki. It is a router: it never reimplements synthesis per source — it selects a connector to produce a sanitized source note, then the kernel performs the shared, ordered pipeline.
/ingest <url|file|prompt> — ingest one source. Classify the input and pick the
matching connector./ingest (no argument, or "do a full ingest") — iterate every enabled connector whose
side-effect policy permits unattended ingest: self + other registered projects' git/PR history,
project-scoped memory, roles, plus read-only registered sources (notion, jira, confluence,
quickbooks, …). external-write connectors (Slack OAuth, CRM writeback) are skipped unless the
run includes explicit external-write intent./ingest --dry-run — list the sources a full ingest would run; perform no writes.Before anything else, run the bundled resolver from the installed Lisa wiki plugin, not from the
consumer repository's scripts/ directory:
node "${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-${CURSOR_PLUGIN_ROOT:-$(npm root)/@codyswann/lisa/plugins/lisa-wiki}}}/scripts/ensure-wiki.mjs" --json
Use the returned wikiRoot as the base for the whole pipeline — never hardcode wiki/. This is
mode-agnostic by design:
wiki.source in .lisa.config.json) — resolves the in-repo wiki root instantly;
the branch sync below proceeds against this repo's remote, exactly as before.wiki.source.url set) — ensure-wiki mirrors/refreshes the gitignored working copy
of the canonical wiki repo and returns its path. In this mode the "sync the branch" step below, and
the Commit/PR step (7), operate against the wiki repo's own remote (the mirror), not the host
project's origin. The host project repo is never written to.Run this once per ingest invocation, before any source is processed (skip for --dry-run, which
writes nothing). The point is to ingest on top of fresh state, never stale state. Operate in the wiki
root resolved in Step 0 — the host repo for a local wiki, the mirror for a remote one.
gh repo view --json defaultBranchRef -q .defaultBranchRef.name,
or git remote show origin | sed -n 's/.*HEAD branch: //p', or the origin/HEAD symbolic ref. If
the repo has no remote, note "no remote — skipping branch sync" and proceed.git fetch <remote> to update remote-tracking refs.<remote>/<default> (git pull --ff-only).<remote>/<default> in (per the project's convention)
so the branch is not behind the default.wiki/sources/<system>/ plus run
metadata. A connector writes only its source note + metadata — never synthesis/index/log/state.wiki/open-questions/, never asserted.wiki/index.md.wiki/log.md entry (fixed operation vocabulary).git diff --check, secret/tenant/contamination scans, touched-file guard.wiki/state/<system>/*.json cursor — only now, after 1–5 pass.config.git policy. If the ingest started on
the default branch, create a dedicated ingestion branch first — never commit ingestion straight to
the default. Push the branch and open a PR targeting the default remote branch (via the host's
PR mechanism — e.g. gh pr create --base <default>). Before enabling auto-merge, feed the safety
scan output into createWikiIngestPublicationPolicy from scripts/wiki-safety.mjs. Enable
auto-merge only when autoMergeAllowed is true. external-write runs, redacted runs, and any run
with sensitive findings are the exception — open the PR without auto-merge so a human reviews
them before it lands. The PR summary must include the policy's safe review summary: counts and
entity types only, never raw values, ranges, tokens, source snippets, or scanner output. If
auto-merge cannot be enabled (the host doesn't support it, branch protection forbids it, or the
policy requires review), leave the PR open and note that a human must merge.external-write/sensitive runs.
--dry-run does neither (it writes nothing).sourceRetention and sensitivity; do not invent facts.scripts/verify-wiki-safety.mjs) against the wiki files/source notes produced by
the ingest. The default built-in scan blocks unredacted private keys, tokens, and
common financial/person identifiers without printing raw values. Projects may
select --scanner gitleaks for local parity with Gitleaks, and may use
--scanner trufflehog as a stricter optional verification pass when installed;
if a selected scanner is unavailable, keep the ingest blocked for review.scripts/wiki-safety.mjs. Treat
reviewRequired or any summarized finding as a hard auto-merge stop. Use the
generated PR summary text as-is or preserve its shape so reviewers see entity
types and counts without raw sensitive values.lisa-wiki-add-ingest (scaffold a custom front-door that chains here), lisa-wiki-query,
lisa-wiki-lint, lisa-wiki-doctor.
development
Prepare a machine — a fresh laptop or a throwaway container — to run coding agents, before any repository exists. Detects which of Lisa's supported agents (Claude Code, Codex, Cursor, OpenCode, Antigravity, Copilot) are already installed, asks which credential manager the machine uses (Bitwarden, 1Password, Doppler, Vault, AWS, or none), and installs only what is missing, each by its vendor's own preferred method. Idempotent, headless by default, and emits a Dockerfile for a spin-up/spin-down environment. Run it on a new machine, in a container, or before cloning anything.
tools
Provision and verify a remote execution environment for a host project — Codex Cloud today, other remote surfaces as they are added. Generates a repository-owned setup script that installs the declared toolchain, materializes secrets through lisa-secrets-access, and runs the project's own hook. Provisions by API where one exists, by driving the vendor console where one does not, and by emitting exact config otherwise — then proves the result with the same read-back regardless of which tier did the work. Use before dispatching any work with executionEnv.
tools
Bring a developer's machine in line with the toolchain the project declares. Reports every tool in remoteEnv.tools that is missing, outdated, or unpinned for this platform, and installs the missing ones into ~/.local/bin from the same pinned, checksummed entries the remote surfaces use — but only when asked. Same manifest, same pins, same installers as lisa-setup-remote-env; what differs is consent and that the pin is a floor rather than an equality. Run it on a fresh checkout, after a manifest change, or when a tool fails at the moment of use.
tools
Route one unit of work to a remote execution surface. Reads the executionEnv parameter (local by default, codex-cloud or claude-web today), verifies the environment is provisioned and bound to this repository, submits a thin skill invocation, records the task identifier to .lisa/remote-dispatch.json, and exits without polling. Routing only — the remote runs the identical skill from the identical repository. Composable and inline: other skills invoke it via the Skill tool rather than users calling it directly.