Project Overview logo

Project Overview

Community
AlexZio00
project-overview

Use when the user wants a deterministic cross-project status map generated from registered projects' session handoffs. Triggers: '/project-overview', 'project map', 'overall status'. Reads ~/.claude/projects-registry.md (opt-in list), parses each project's memory/session-handoff-LATEST.md state-snapshot v1 block (ts+ctx only), and rewrites the AUTO:START/AUTO:END region of ~/.claude/OVERVIEW.md. Does not touch STATE.md. Does not scan directories automatically.

Overview

PublisherAlexZio00
Repositorysovereign-skills
Skill nameproject-overview
Stars
149
Forks
23
Bundled files
4
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 4 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by AlexZio00 on GitHub. Read the source before you install it.

Installation

Install the Project Overview AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/AlexZio00/sovereign-skills/tree/master/project-overview
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/AlexZio00/sovereign-skills.git /tmp/sovereign-skills
mkdir -p .claude/skills
cp -r /tmp/sovereign-skills/project-overview .claude/skills/project-overview
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Project Overview in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Project Overview on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Project Overview is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Project Overview

Dominant Variable

Does the registered project list (projects-registry.md) point to paths that actually exist, and does each project's handoff file contain a state-snapshot v1 block? If neither is true, the generated map is empty.

Key Assumptions

  1. session-handoff-LATEST.md is a hint, not a fact — parsed results (ts/ctx) are carried over as-is without fact-checking. The generated overview reflects "what each project last reported," not "current ground truth."
  2. Registry is opt-in — never pull in unowned projects or auto-scanned directories. Only projects explicitly listed in projects-registry.md are in scope. Write exactly one - name: /abs/path line per project. The script matches one line at a time and accepts only a value that is an absolute path (/..., ~/..., C:\... or C:/...); any other bullet (a note, a URL, a relative path) is ignored and reported as a WARN line on stderr.
  3. AUTO block generation is fully deterministic — a regex-based script (scripts/generate_overview.py) does all the parsing/rendering, including neutralizing markdown-table-breaking characters in the text it pulls from other projects' handoffs, isolating a single non-UTF-8 handoff file so it can't abort the whole run, and refusing (BLOCKED, no write) instead of guessing when the AUTO marker pair itself is mangled. The model only triggers execution and reports the result — no LLM inference in the parsing/rendering logic itself.

Trigger

  • /project-overview
  • "project map"
  • "overall status"

Discard If

  • Zero registered projects (projects-registry.md missing or empty list) → instruct the user to add a project to the registry first, then stop
  • Already run recently with no state change across projects (handoff file mtimes unchanged) → suggest skipping the re-run (not forced — run if the user wants)

File formats (registry, handoff snapshot block, OVERVIEW.md): https://github.com/AlexZio00/sovereign-skills/blob/master/docs/FILE-CONVENTIONS.md

Workflow

  1. Confirm ~/.claude/projects-registry.md exists. If missing, report BLOCKED: "registry missing — create it with one - name: /absolute/path line per project." (The script reports the same thing on stderr and exits 1.)
  2. Run this skill's own script (no arguments — it uses the default registry and output paths on its own):
    bash
    python3 "${CLAUDE_SKILL_DIR}/scripts/generate_overview.py"
    ${CLAUDE_SKILL_DIR} is this skill's folder; Claude Code fills it in. In other agents, replace it with the path where you installed the skill. Use python instead of python3 where only that exists (common on Windows). If the script file is missing or Python cannot start it, report BLOCKED with the error text and stop; do not write OVERVIEW.md by hand.
  3. Check the exit code:
    • 0 → report the stdout's first line verbatim to the user. Both WORKING: N project(s) -> <output> and PARTIAL: N project(s) -> <output> (M with no snapshot) are valid values the script itself produces (it counts the no-snapshot projects and picks the label itself) — don't assume exit 0 always means WORKING.
    • 1 → report the stderr BLOCKED: ... message verbatim to the user. Never proceed on assumption.
  4. On success, tell the user the ~/.claude/OVERVIEW.md path.
  5. Report snapshot age in chat only, never in the file: compare each project's Last Update timestamp in the generated AUTO block with today's date. For every row older than 7 days, report stale: <name> <N> days ago (ts). If a timestamp cannot be read as a date, report age unknown for that row. Do not add this as an Age column in generate_overview.py: a date-dependent value would make the AUTO block change every day even when the inputs are the same, which breaks Invariant 4 (byte-identical output).

Output

  • Chat report: relay the script's own stdout/stderr line verbatim (WORKING: N project(s) -> <path> or BLOCKED: ...) — don't paraphrase it or invent a project count of your own.
  • Disk write: the script writes exactly one file, and only the AUTO:START~AUTO:END region inside it — ~/.claude/OVERVIEW.md. Nothing else on disk is touched, and text outside the markers in that file is never rewritten.
  • Final status label: state one of WORKING / PARTIAL / BLOCKED (definitions in Truthful Reporting below) at the end of every run — never leave it implicit.

Scope Boundary

DoesDoes NOT
[READ] Parse handoff files of registered projects onlyAuto-scan directories (e.g. an entire drive)
[WRITE] Overwrite only the AUTO:START~AUTO:END region of OVERVIEW.mdRead/write STATE.md — this skill never references STATE.md at all
[READ] Parse only the ts/ctx fields of the state-snapshot v1 blockIntroduce new fields like status (planning/dev/ops/paused)
[MANUAL] Run only when the user explicitly triggers itAuto-wire into existing hooks like session-checkpoint

Safety Layers

Risky ActionReversibilityApplied Layers
Overwrite the OVERVIEW.md AUTO blockmedium (text outside markers is preserved, also recoverable via git history)L1+L3
  • L1 (Invariants): Invariant 1 — preserve text outside AUTO markers. Invariant 2 — never scan unregistered projects.
  • L3 (User Approval): manual-trigger only — runs only when the user explicitly invokes it (no auto-wiring is itself the approval gate).

Invariants (never violate)

  1. Text outside AUTO markers is always preserved: if apply_auto_markers() alters any text outside the markers, that's a bug. Violation → notes a human wrote directly into OVERVIEW.md get lost on re-run.
  2. Only scan explicitly registered projects: never add auto directory-discovery logic to this script. Violation → information about unowned projects leaks into the map.
  3. STATE.md is absolutely untouched: no code path in this skill reads or writes STATE.md. Violation → direct Scope Boundary violation, risk of contaminating the cross-project blocker list.
  4. Idempotency: re-running with identical input (unchanged registry + handoff files) must produce a byte-identical AUTO block. Violation → undermines the entire "deterministic auto-generation" design goal.
  5. Cross-project text is data, not markup: ts/ctx values come from another project's handoff file and are untrusted — a stray | or newline in there must not be allowed to split table columns or break rows. Violation → a single malformed handoff field corrupts the whole table for every other project listed in it.

Error Recovery

Failure TypeDetectionRecovery
missing_dataprojects-registry.md missing or empty (or holds no valid - name: /absolute/path line)Return BLOCKED (exit code 1, message on stderr), instruct user to create/add to the registry. A project whose handoff file is missing is not an error: its row says "no handoff file". A missing OVERVIEW.md is created with a title line and the AUTO block
tool_failureFailed to read a specific project's handoff file (permissions/path, or a non-UTF-8 encoding)Mark only that project as "no snapshot" (or "decode error" for a non-UTF-8 file; a readable handoff without a snapshot block says "handoff has no state-snapshot block"), continue the rest (partial failure doesn't block the whole run — explicit labeling keeps it transparent per no-silent-brokenness). Final status label becomes PARTIAL for that run.
input_errorOVERVIEW.md has a mangled marker pair (AUTO:END appears before AUTO:START, either marker is missing/orphaned, or a marker is duplicated — from a manual edit)Don't crash and don't guess at a splice point. Auto-repairing by appending a fresh pair was tried and found unsafe: an orphan AUTO:START lost the manually-written text sitting after it on the next run, and AUTO:END-before-AUTO:START kept re-appending a pair on every run (non-idempotent, unbounded growth). Current behavior: raise MarkerCorruptionError, write nothing, report BLOCKED with the exact marker problem, and let a human fix the markers by hand.
logic_inconsistencyIntegration test finds AUTO block mismatch on re-runScript regression — revert the commit and re-review the implementation

Truthful Reporting

  • no mock deception: before reporting "generation complete," actually read OVERVIEW.md to confirm project entries landed in the AUTO block.
  • no silent brokenness: a parsing failure for a specific project's handoff is never silently skipped — it's shown explicitly as "no snapshot".
  • Final status label: WORKING (generated normally) / PARTIAL (some projects show no snapshot) / BLOCKED (registry missing/empty).

Rationalization Table

RationalizationRebuttal
"Even if it's not in the registry, scanning every directory to find projects would be more convenient"Violates Invariant 2. Auto directory-discovery risks leaking information about unowned projects into the map — only explicitly opt-in registered projects are in scope.
"Reading STATE.md too and surfacing cross-project blockers on the map would be useful"Violates Invariant 3. Never touching STATE.md at all is itself the Scope Boundary — it prevents contaminating the cross-project blocker list.
"If parsing fails for some projects, just quietly drop them and show the rest"Violates no-silent-brokenness. A failure must be shown explicitly as "no snapshot" so the user knows what was missed, not silently omitted.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Project Overview AI skill do?

Use when the user wants a deterministic cross-project status map generated from registered projects' session handoffs. Triggers: '/project-overview', 'project map', 'overall status'. Reads ~/.claude/projects-registry.md (opt-in list), parses each project's memory/session-handoff-LATEST.md state-snapshot v1 block (ts+ctx only), and rewrites the AUTO:START/AUTO:END region of ~/.claude/OVERVIEW.md. Does not touch STATE.md. Does not scan directories automatically.

Why use Project Overview on TypingMind?

Because you install it once and use it with any model. Project Overview is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Project Overview in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/AlexZio00/sovereign-skills/tree/master/project-overview. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Project Overview?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Project Overview?

As many as you like. As long as a model supports skills, you can use Project Overview with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Project Overview AI skill free?

Yes. It is published on GitHub by AlexZio00 under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇