Skip to content
Back to skills

Weekly Review

ASecurity

Use it once a week — by hand or as a scheduled routine — and whenever the user asks "where do we stand?", wants the state of things, or a health check of the system. Puts the core and production through a sieve (lint, inbox, workstreams and their waits, effect measures, routines, freshness of the framework and of the skills, the outward watch, drift) and produces a synthesis with proposed actions, traced in the log. It observes and proposes; it fixes nothing.

  • 11 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 23, 2026
ai-agentspythongobashgit

Security analysis

A100/100

Scanned October 6, 2026

npx -y skills add manence/manence --skill weekly-review --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Weekly Review?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Weekly Review
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/manence-weekly-review/badge)](https://www.skillsdirectory.com/skills/manence-weekly-review)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: weekly-review
description: Use it once a week — by hand or as a scheduled routine — and whenever the user asks "where do we stand?", wants the state of things, or a health check of the system. Puts the core and production through a sieve (lint, inbox, workstreams and their waits, effect measures, routines, freshness of the framework and of the skills, the outward watch, drift) and produces a synthesis with proposed actions, traced in the log. It observes and proposes; it fixes nothing.
---

# weekly-review, the weekly review

## Purpose
To prevent the two drifts that kill a Manence OS: the disorder that sets in (orphans, an overflowing inbox, broken links, badly born workstreams) and the workstreams that stall without anyone noticing.

## Procedure
1. **Mechanical lint**: `.claude/hooks/lint.sh` on the repo, **then** on the production root (`$<PROJECT>_PRODUCTION_ROOT`, default `../production/`, resolved to an absolute path): that is where the workstreams' links to the KB have to resolve from (Spec §18). Report the findings.
   **The journal**: run `python3 scripts/log-rotate.py` as a dry run at every review (it writes nothing): it says whether the journal reads in one direction, whatever its size. **Two sizes**: `lint.sh` on the core reports `log.md` over 150 KB and `AGENTS.md` over 200 lines (Spec §8, §9). Over the log's threshold, whatever the journal's age, propose the rotation by ISO weeks with the shipped script: `python3 scripts/log-rotate.py` (a dry run; `--out <tmp>` to show the files), played with `--apply` on the user's GO, never on its own. The script also says whether the journal reads in one direction.
   **Identity trim** (Spec §9): on the first review of the month, or when the lint reports `AGENTS.md` over budget, list the lines of `AGENTS.md` and `CLAUDE.md` that have another home, each with its destination (a rule the Spec or a skill carries → a link; a fact → the KB; a dated decision → the log; a dead line → removed) and the line count before and after: one proposed action among the others.
   **The guardrail's refusals** (`.claude/guard-refusals.log`, one line per refusal: date, dialect/tool, rule, command; Spec §12): "N refusals this week, the last on <date> (<rule>)", and any refusal that looks like a false positive (a harmless command refused) as a proposed fix. The same file carries the openings: `admin-go-open` (the user's admin GO), `guard-files-granted` (a write it let through) and `go` (an ordinary GO, traced only); count them apart, and name each session the guard was opened in with what was written. No line for 30 days, or no file: say so and propose replaying `bash .claude/hooks/test-guard.sh` on each harness in use; a guardrail never seen refusing is not known to work.
2. **Orphans**: whatever lives outside the routing table in `AGENTS.md` (Spec §17; the `skills` link at the root is the bridge described in `AGENTS.md` "Skills", not an orphan). For each one, propose its destination from the table. Two places are read too: `.upgrade-removed/` (organs an upgrade retired: propose deleting each one once nothing in the core points to it), and the container, the core's parent folder (it holds the core, production and the MOS's declared neighbors; anything else there is an orphan of the MOS).
3. **Badly born workstreams**: any `in-progress/` folder with no `About.md` (Spec §16) → propose the retroactive record from `close-work`.
4. **Inbox**: a `type: instruction` item in `status: deposee` is not triaged, it is handled by the `consignes` skill (Spec §21; as a scheduled routine, only report it). Route every other item (a fact → `kb-ingest`, work → a candidate for `open-work`, stale → propose `trash`, keep as-is → it stays but you date it). **Time guard**: any capture older than 14 days, and any `traitee` or `rejetee` item older than 14 days, is listed for sorting or trashing; the review proposes, the user disposes; the inbox is exempt from the file contract precisely because this sweep exists.
5. **Workstreams in progress**: for each `<domain>/in-progress/`, the goal (its `About.md`), its age, its last activity; flag the ones that haven't moved in 2 weeks (move them forward, or close them with `close-work`, a deliberate abandonment included). Then the waits, as Spec §16 defines them: the `awaiting` entries older than 14 days grouped by person, and any in-progress `About.md` with no `awaiting` field.
6. **Effect measures**: the closed external actions whose measurement date has been reached (Spec §16), and any missing measurement report. The dates live where `close-work` put them: a dated line or a measurement capture in `inbox/`, or the target periodic report in the KB.
7. **KB**: `kb-lint` on the pages that moved this week, if any; otherwise note it as not done. The freshness of the periodic report (in the KB), and any `review_when:` whose trigger event has occurred (due dates belong to the lint, step 1). A `review_when:` anchored on a dated event that has not happened (the date passed, the event did not): neither due nor silent; report it and propose a new date.
8. **Framework freshness**: compare `.claude/manence-version` with the latest tag of the public framework repo, `git ls-remote --tags https://github.com/manence/manence.git` (a public read; nothing about the MOS is sent; without network, note "not checked this week"). If the repo is ahead: list the missed versions with their `CHANGELOG.md` notes, and propose the update (`upgrade.sh`, see `UPGRADING.md`). If `.claude/manence-version` is missing, the install predates 0.5.0: say so and propose stamping it with the version the core actually matches.
9. **Skills**: the age of each skill in git (`git log -1 --format=%cs -- .claude/skills/<name>/`); the installed copy compared with the version the framework ships (what a dry run of `upgrade.sh <core>` shows); drift in both directions (a copy that has fallen behind, a local adaptation never contributed back). Right after an upgrade, every skill's last commit is the upgrade's: the ages say nothing that week, so say so and rely on the comparison with the shipped version. A review of a skill may conclude it should be retired; the method is `skill-craft`, the weekly review only observes.
10. **Routines**: first synchronize the reference (`git fetch`, compare to `origin`: Spec §11). Then, for each routine declared in `.claude/mos.json`, find its last proof — the most recent file matching `proof_glob`, or, when a `proof_marker` is declared, the last line of that file carrying the marker, dated by the `## [YYYY-MM-DD]` heading above it — and compare its age with the cadence's period plus `grace_days` (2 unless declared): *proof received N days ago*, or *late by N days*. Never call a routine **broken**: a proof that hasn't arrived may mean it ran somewhere that commits nothing. Where a routine's prompt is readable (its declaration, or the file it names), a line that begins with the admin GO formula is a finding: a routine never carries it (Spec §12).
11. **Outward watch**: read the most recent report in the MOS's watch folder (the one its scope page names; default `knowledge-base/watch/`; the `outward-watch` skill). Missing, or older than a week? Run `outward-watch` first, or note it as not done (always, as a scheduled routine: the review writes no report). Then pick up the P0s and P1s whose inbox item wasn't routed at step 4.
12. **Drift checks** *(five questions borrowed from LIVING REFERENCE's drift tests, a source credited in Spec §6)*, each answered against the KB and the log, never against an impression:
   - Does any recent production (workstream, deliverable, public surface) **contradict a `canon` page** of the KB?
   - Has an option **set aside in the log come back** — re-proposed or quietly re-applied — even though its rejection reason still holds?
   - Is a decision **made for one workstream being applied beyond it**, as if it bound the whole project?
   - Is a **draft or proposal cited somewhere as if it were settled** (`status: proposal` treated as fact)?
   - Is a **validated constraint being ignored** anywhere (a publication rule, a guard, a naming convention)?
   The repair (reject, archive, replace, revalidate) goes into the synthesis as a proposal.
13. **Force of proposal** *(the review's one divergent gesture)*: starting from `STRATEGY.md` and the watch report, put forward ideas the user would not have had on their own — a blind spot in the stated direction, something never tried, a connection between an outside finding and a problem here. An idea already set aside in the log comes back only if its context has changed, and you say what changed (Spec §11).
14. **Synthesis**: the state of things (health, workstreams, waits, inbox, measures, freshness of the framework and of the skills, routines, watch, drift), the proposed actions ranked by value (`open-work` candidates, workstreams to close, fixes), and the ideas from step 13 listed apart. It's the user who chooses.
15. **Trace it**: an entry `## [YYYY-MM-DD] review | <the week number, in the working language>`, at the top of `log.md`, under its H1 (Spec §4), with the condensed synthesis and what was decided. `review |` is a key (the routine's `proof_marker`).

## Done
- Success condition: the `review |` entry exists in the log under today's date and carries the proposed actions, and the ones chosen when the user was there; run by a routine or a subagent, it says that the choice waits for the user.
- Reading criterion: a fresh context reading that entry alone knows what is healthy, what is dragging, which actions were proposed, and which were chosen.
- Stop: the review fixes nothing and opens no workstream without the user's agreement.

## Running as a scheduled routine
The review can run with no human at the keyboard (a cloud routine, a cron, whatever the harness offers), on one condition: **signal only**. It reads, measures and proposes; it corrects nothing, opens and closes no workstream, and touches nothing outside the core. It writes only its `review |` entry in `log.md` (step 15) and its synthesis, pushed where the human will read it (a commit, a message, an inbox item). Every proposed action waits for them.

Declare it in `.claude/mos.json` like any other routine: `cadence: "weekly"`, `proof_glob: "log.md"`, `proof_marker: "] review |"`. A review that ran somewhere that commits nothing shows up as a proof that did not arrive: a fact to state, not a breakage to presume (step 10).

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.