sentineledge-outline-skill-hook
v1.0.0
Published
Installer for the SentinelEdge Outline auto-sync hook + /outline skill for Claude Code. Mirrors per-project session state into an Outline collection on every SessionEnd.
Maintainers
Readme
sentineledge-outline-skill-hook
One-shot installer for the SentinelEdge Outline auto-sync for Claude Code.
Installs two things into your global Claude Code config (~/.claude/):
- Hook —
outline-sync.mjsruns at everySessionEndand creates/updates one Outline document per project, populated fromCONTEXT.md,memory/STACK.md, and today's git log. - Skill —
/outlineslash command to check sync status, repair a document, or search Outline.
It also wires the mcp-outline MCP server so the /outline skill can talk to Outline.
Quick start
npx sentineledge-outline-skill-hookThe installer will prompt you for:
| Prompt | What it is |
| -------------------------- | ------------------------------------------------------------------------------------------------------ |
| Outline base URL | https://app.getoutline.com for cloud, or your self-hosted Outline URL |
| Outline API token | An API token from Outline → Settings → API. Starts with ol_api_… |
| Collection | Picked interactively from the list of collections in your workspace |
| Projects root | Local folder whose direct children are the projects you want tracked. e.g. ~/Develop/myteam-projects |
| Developer name + email | Stamped onto every Outline session log entry. Defaults from your git config user.name / user.email |
That's it. Open Claude Code in any project under your projects root, do some work, end the session — the document appears in the chosen Outline collection.
Requirements
- Node.js ≥ 20
- Claude Code installed (
claudeonPATH) — required to wire the MCP server - An Outline account with an API token (cloud or self-hosted)
- Existing or empty
~/.claude/folder (the installer creates anything missing)
Supported platforms: macOS, Linux, Windows (PowerShell or cmd).
What gets installed
~/.claude/
├── hooks/
│ └── outline-sync.mjs # the SessionEnd hook
├── skills/
│ └── sentineledge-outline-skill/
│ └── SKILL.md # the /outline slash command
├── state/
│ └── outline-docs.json # project slug → Outline document ID (created on first sync)
├── logs/
│ └── outline-sync.log # last 1000 hook runs (rotated)
├── .secrets.env # OUTLINE_* keys appended here (other keys preserved)
└── settings.json # SessionEnd hook entry merged in (other hooks preserved)Claude Code MCP config is updated via claude mcp add so mcp-outline is available to the /outline skill.
CLI commands
npx sentineledge-outline-skill-hook # default: install (interactive)
npx sentineledge-outline-skill-hook install # explicit install
npx sentineledge-outline-skill-hook reconfigure # re-prompt + overwrite secrets only
npx sentineledge-outline-skill-hook doctor # verify everything is wired correctly
npx sentineledge-outline-skill-hook uninstall # remove hook + skill + settings entry (leaves .secrets.env)All commands are idempotent — running install twice will not duplicate entries.
How project detection works
When Claude Code ends a session, the hook resolves the project slug like this:
cwd = /Users/alice/Develop/myteam-projects/payroll/api
root = /Users/alice/Develop/myteam-projects (your OUTLINE_PROJECTS_ROOT)
relative = payroll/api
slug = payroll ← document title in OutlineIf cwd is not inside OUTLINE_PROJECTS_ROOT, the hook silently exits — sessions outside your tracked folder are ignored.
What lands in the Outline document
Each project gets one document, titled after the project slug:
- Project Summary — sprint goal from
memory/STACK.mdif present - Stack — runtime, framework, db, auth, hosting, ci/cd, version, status (parsed from
memory/STACK.md) - Developers — your configured name + email
- Session Log — newest sessions at top. Each entry has:
- Date, goal (from
CONTEXT.md## Session …header), developer - Bullet per completed task (parsed from
## 📋 Session Tasksblocks) - Today's git commits (since local midnight)
- Date, goal (from
The hook never fails the session: if Outline is down or the token is invalid, it logs the error to ~/.claude/logs/outline-sync.log and exits silently.
Uninstalling
npx sentineledge-outline-skill-hook uninstallThis removes:
~/.claude/hooks/outline-sync.mjs~/.claude/skills/sentineledge-outline-skill/- The
SessionEndentry pointing at the hook in~/.claude/settings.json - The
mcp-outlineMCP server (viaclaude mcp remove)
It does not delete:
~/.claude/state/outline-docs.json(so you can reinstall later without re-creating Outline docs)~/.claude/.secrets.env(yourOUTLINE_*keys stay — delete them by hand if you want them gone)- Any documents already created in Outline
Troubleshooting
Run the doctor:
npx sentineledge-outline-skill-hook doctorIt checks: Node version, all expected files exist, secrets are loaded, settings.json is wired, the Outline API is reachable with your token, and claude mcp list shows mcp-outline.
If a session ends and no document appears, tail the log:
tail -n 50 ~/.claude/logs/outline-sync.logLicense
MIT
