Skip to content
Back to skills

Crit In Force

ASecurity

Generate IN-FORCE.md — the law in force of an agent: one line per rule that binds it, read from the Carries blocks of the live entries of its two logs, grouped by lane, with the tier and the detector of each. The boot reads it instead of the logs whole; a log is the chronicle, opened at an id this file names. Use it at every round-close that touched a DECISIONS or LESSONS-LEARNED entry (--check tells you if it is stale), when a skill needs a lane's view (--lane), or to see what binds a domain...

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 12, 2026
developmentbash

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned November 12, 2026

npx -y skills add CritosAI/critos --skill crit-in-force --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Crit In Force?

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

Security grade badge for Crit In Force
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/critosai-crit-in-force/badge)](https://www.skillsdirectory.com/skills/critosai-crit-in-force)

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: crit-in-force
description: >-
  Generate IN-FORCE.md — the law in force of an agent: one line per rule that binds it, read
  from the Carries blocks of the live entries of its two logs, grouped by lane, with the tier
  and the detector of each. The boot reads it instead of the logs whole; a log is the
  chronicle, opened at an id this file names. Use it at every round-close that touched a
  DECISIONS or LESSONS-LEARNED entry (--check tells you if it is stale), when a skill needs a
  lane's view (--lane), or to see what binds a domain right now. Generated, never hand-edited;
  it holds the rules in force only — a settled rule resolves through the atlas.
---
<!-- SPDX-License-Identifier: Apache-2.0 · Copyright 2026 Criticaldrop Entertainment s.r.l. -->

# crit-in-force

The law in force of one agent, derived from its logs (`contract-memory § 2`, `§ 6`).

## How to run

```
bash ~/.claude/skills/crit-in-force/in-force.sh --own a4         # rewrite YOUR IN-FORCE.md (a4's), when it changed
bash ~/.claude/skills/crit-in-force/in-force.sh --check --own a4 # fresh? yours from the tree, the others as committed
bash ~/.claude/skills/crit-in-force/in-force.sh --lane onboarding .critos/memory/a4   # also the lane's view
```

**Who writes.** A generator reads a folder it does not own as committed, and writes only in the
folders its runner owns (`contract-memory § 6`): `--own a<N>` (repeatable; a folder argument counts
as one) names yours — read from the working tree and the only ones written; every other memory
folder is read at HEAD and never written, so your run cannot carry a neighbour's uncommitted
state, and a neighbour's run cannot dirty your index. Without a name nothing is written and every
folder is read at HEAD — a verification's run, nobody's. An index whose content did not change is
not rewritten (`unchanged`), so its stamp says when the law last changed. A folder argument that
is none, a bare name where a folder is expected (`a4` is `--own`'s word; the argument is
`.critos/memory/a4`), or an `--own` naming no folder is answered with one line and exit 2 — in
every mode, `--check` included: never a skip, never a silent zero.

## What it reads

Inside a live entry of `DECISIONS.md` or `LESSONS-LEARNED.md`, under a line that is exactly
`**Carries.**`, one list line per id:

```
- `<id>` · <the rule in one imperative line> · binds: <lane>[ · tier N[ — <detector>]]
- `<id>` · <the rule in one imperative line> · settled: <state>[ — <why>]
```

- An entry carries **at least its own id's line**; an entry that consolidates carries one line
  per id it absorbs — that line is the archived id's live carrier.
- `binds: <lane>` — the rule is in force; the lane is the owner's word (`code`, `onboarding/config`).
  A tier on the line wins; absent, the entry's `**Enforcement:** tier N` field; absent both, `?` —
  a finding of `/crit-doc-lint [26]` (UNTIERED), counted in the header. The field's detector is
  lent to a line only with its tier: a line with its own tier and no detector prints the tier alone.
- `settled: <state>` — the rule binds nothing: `done` · `superseded by <id>` · `consolidated in <id>`,
  then an optional ` — <why>`. Settled lines are not in the index.
- A line outside the two shapes is a `CARRIES-FORM` finding of `/crit-doc-lint [26]`.

## What it writes

`.critos/memory/a<N>/IN-FORCE.md` — a header, then one section per lane, one line per rule:
`` - `<id>` · <rule> · tier N — <detector> ``. Derived: a hand-edit disappears at the next run.
The header counts what was read and names what it cannot summarise: `**Carried:** k of N live
entries` and, when k < N, an `**Uncarried:**` line per log with the ids of the entries that
carry nothing — the boot opens those whole; and, when any rule line prints `tier ?`, an
`**Untiered:** u of N rule lines` line — the debt where the boot reads it. The none-line is
written only when every live entry carries its rule: an index never reads as *no rule binds
you* while an entry it could not read exists.
**Budget 300 lines** (`.claude/doc-lint-in-force-lines` overrides): past it `--check` prints a
`BUDGET` warning — the law in force of one agent is read at every boot, so a long index is the
signal to consolidate, not to read faster.

`--lane <prefix>` also writes `IN-FORCE.<prefix>.md`: the rules whose lane is `<prefix>` or
starts with `<prefix>/`, one section per sub-lane under a stable anchor (`#config`), so a skill
can send a reader to one phase of a procedure. A view, once present, is regenerated with the
index.

## When

- **At the round-close** that appended or changed an entry (`contract-session § 2`), beside the
  atlas. `/crit-doc-lint [27]` reports a stale or missing index.
- **At boot**, `contract-session § 1` step 8 reads it in place of the logs whole, and opens the
  entries its head names as uncarried.
- Never cite it: cite the entry it points at.

Files in this skill

  • SKILL.md4.8 KB
  • in-force.sh19.1 KB

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.

View all in development →

Comments

Loading comments…

Newsletter

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