by adand-91
Privacy-first AI project and Skill feedback loop for Codex and Claude Code—turn corrections into traceable requirements and verified repair plans.
# Add to your Claude Code skills
git clone https://github.com/adand-91/requirement-ledgerGuides for using ai agents skills like requirement-ledger.
Last scanned: 9/2/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-09-02T08:29:57.333Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}See how requirement-ledger compares with popular alternatives.
requirement-ledger is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by adand-91. Privacy-first AI project and Skill feedback loop for Codex and Claude Code—turn corrections into traceable requirements and verified repair plans. It has 117 GitHub stars.
Yes. requirement-ledger passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/adand-91/requirement-ledger" and add it to your Claude Code skills directory (see the Installation section above). requirement-ledger ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
requirement-ledger is primarily written in Python. It is open-source under adand-91 on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh requirement-ledger against similar tools.
No comments yet. Be the first to share your thoughts!
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
See comparison
The user names a Codex conversation, Agent Skill, project, or review window. Do not make the user remember and restate every problem. When the host exposes bounded task/history access, retrieve the related context it is already allowed to access. Otherwise request a selected task or bounded export and mark the missing coverage. Reconstruct the available history, discover what is worth improving, and preserve behaviour the user still relies on.
Choose one mode, then read review-modes.md and codex-context-discovery.md:
| Mode | Use when | Scope |
|---|---|---|
audit |
One conversation, Skill, Agent, or project needs improvement now | The named target and directly related history |
daily |
Review yesterday and find the next improvement | Codex projects active in the configured workday window |
weekly |
Review the week and compare GitHub or industry developments | Final daily reviews, unresolved evidence, and source-bound ecosystem research |
When the target is an Agent Skill, also load the detailed personalisation workflow. Use the packaged evidence pipeline for explicit files, retained private evidence, or digest-bound validation.
The product is a loop, not an autonomous patch bot:
named target or review window
-> host-mediated related-context discovery
-> private timeline and facts
-> conservative attribution
-> concrete DRAFT change cards
-> ordinary, visible Codex development under the user's authority
-> digest-bound frozen-oracle validation
-> retained outcome
The Codex host owns context discovery and semantic review. The packaged CLI owns explicit-file evidence and state separation. The host coding agent owns any authorised source change. Never blur those roles.
Lead with plain-language outcomes rather than making the user inspect architecture:
If evidence is insufficient, say what remains unknown; do not force the user to diagnose the
root cause. If the request is analysis-only, stop at the change card. If implementation is
authorised, use the host's visible Skill-maintenance workflow and show the final diff and
validation result.
audit, or an explicit time window for daily / weekly. Invoking a
time-window mode permits metadata enumeration of Codex projects active only in that window; it
does not permit unrelated or disk-wide discovery.~/.codex, ~/.claude, a home directory, or a disk.codex-scan: bind one non-home scope root, one non-path
target/task reference, one IANA timezone, and one half-open window. The scope root is containment,
never permission to enumerate files.item_completed snapshots may
coalesce by turn + item identity, but ordinary messages/tools never content-deduplicate and
prose never proves completion, automation, delegation, or Subagent origin.unknown is a successful, honest attribution result.The normative product and error-code contract is in V0.1_CONTRACT.md; load it whenever changing the pipeline or its permissions. The Codex host and three-mode boundary is in V0.2_HOST_CONTRACT.md.
Record these before using tools:
“Look, investigate, audit, give me a plan” stops before source modification. “Fix, implement, start, go ahead” authorises the stated local implementation scope, not commit, push, Issue, PR, Release, telemetry, or publication.
If “BUG version” or a similar label is ambiguous, record the working inference. Ask only when a different interpretation would materially change the build; the safe evidence stages can proceed.
Prefer the installed console command; from a checkout, use
PYTHONPATH=src python3 -m requirement_ledger.
requirement-ledger doctor --repo /exact/project/root
The expected state is READY_READONLY. Capture git status --porcelain=v1 --branch separately
under the host's normal Git safety rules and preserve all pre-existing user changes.
Stop on a missing/non-root/bare repository, unsafe path, unresolved project identity, or a scope that would cross into another repository.
Never place the bundle in an Issue attachment or a chat response. Prefer a user-private temporary directory outside the repository.
requirement-ledger scan \
--repo /exact/project/root \
--input /exact/allowed/session.jsonl \
--test-log /exact/allowed/existing-test.log \
--output /private/location/project-evidence.private.json
Use --provider codex|claude|text only when auto-detection cannot identify a custom filename.
JSONL --since/--until windows are event-level ISO-8601 filters. Plain text has no timestamps
and must not be given a time window.
For a selected Codex export, create the input boundary and private evidence in one operation:
requirement-ledger codex-scan \
--repo /exact/project/root \
--input /approved/exports/selected-task.jsonl \
--scope-root /approved/exports \
--target conversation:skill-audit \
--task-ref task:opaque-reference \
--since 2026-08-29T08:00:00+08:00 \
--until 2026-08-30T08:00:00+08:00 \
--timezone Asia/Shanghai \
--exclude unrelated \
--output /private/location/codex-evidence.private.json
Do not substitute a filesystem root or the user home for --scope-root. Do not discover other
files under it. Target/task references are hashed and not stored verbatim. The embedded envelope
stores digest/count/provenance metadata without source text, file names, or paths; the surrounding
evidence remains private and may contain selected text.
For supported modern rollouts, inspect normalization.ordered_completed_items, turn terminals,
and structured exclusion counts. A task_complete record does not prove that no later completed
item exists. Unknown types or statuses make the source incomplete; do not guess their meaning.
The accepted UserInput set is explicit (text, image/audio and local variants, Skill, mention),
and its non-text blocks never enter the metadata envelope.
Oversized, malformed, or dropped events make the source incomplete. Do not “fill in” missing content from memory, and do not promote an issue from incomplete evidence.
requirement-ledger analyze \
--evidence /private/location/project-evidence.private.json \
--output /private/location/project-analysis.json
The CLI deliberately emits conservative candidates. Review the private evidence locally and keep these labels separate:
| Label | Meaning |
|---|---|
SAID |
directly observed user/event/Git fact |
INFERRED |
the agent's interpretation, explicitly marked |
UNKNOWN |
not established by the allowed evidence |
For every issue record the earliest relevant requirement, the correction or failure evidence, the suspected scope, final scope, exclusions actually checked, completeness, and one observable reproduction. The original evidence discipline remains in evidence-rules.md and real-requirement.md.
Attribution confirmation is deliberately expensive:
upstream: independent projects/sessions with the same provider/version, a clean minimal
reproduction, and project/personal/environment/custom-prompt causes excluded;project-local: direct repository evidence and a clean comparison where it does not reproduce
outside the project;personal: separately authorised personal-config evidence or a clean-config comparison;unknown: everything else, including a single complaint or isolated failure.requirement-ledger report \
--analysis /private/location/project-analysis.json \
--output /review/location/project-report.md
requirement-ledger suggest \
--analysis /private/location/project-analysis.json \
--output /private/location/project-proposals.json
The report omits raw quotes and local identifiers, but still needs a human privacy review. The
proposal is DRAFT — NOT SENT and every action is not-applied.
Each repair plan must contain: issue/evidence references, files or subsystem likely involved, the smallest change hypothesis, regression test, frozen oracle descriptor and digest, rollback, prohibited actions, and the evidence that would disprove the hypothesis. A vague “improve the code” is not a plan.
If the user only authorised diagnosis, stop here.
When local implementation is explicitly authorised, return to the ordinary coding workflow:
AGENTS.md/CONTEXT.md/handoff and inspect its dirty worktree;The CLI intentionally cannot perform these steps. Host sandboxing, repository instructions, and the user's current implementation authority govern them.
Create two small local JSON records from the externally run frozen oracle. Both records and the CLI use the same 64-hex digest of the frozen descriptor:
{"oracle": "one-stable-name", "oracle_digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "exit_code": 1}
{"oracle": "one-stable-name", "oracle_digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "exit_code": 0}
Then compare them without re-running project code:
requirement-ledger verify \
--oracle one-stable-name \
--oracle-digest aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \
--baseline /private/location/baseline.json \
--after /private/location/after.json \
--output /private/location/validation.json
improved requires the same oracle name and digest to fail before and pass after. Baseline pass
then after fail is regressed; identical outcomes are unchanged; mismatches, malformed records,
and ambiguous failures are
inconclusive. Never convert “command ran” into “fix verified”.
Finish with a scope ledger from the earliest valid request: done / partial / cancelled / blocked.
Refresh the project's handoff after the final program change.
Only confirmed upstream findings are candidates for maintainer feedback. Generate a minimal,
anonymous DRAFT — NOT SENT; a human reviews and sends it under separate authority. Never paste
the private bundle or a raw local log.
Repeated commands and corrections are automation candidates, not automatic Skills. Apply the stable-judgement, existing-capability, script-vs-Skill, and recurrence filters in skill-extraction.md. Changing or creating a real Skill follows the host's Skill-maintenance rules and needs implementation authority.
The original retrospective scripts remain available when the user specifically wants to recover requirements, mistakes, and repeated work from a past session:
python3 scripts/scan_transcript.py path/to/session.jsonl
python3 scripts/check_retro_report.py path/to/report.md
Treat all legacy output as private. Legacy --no-text removes bodies but can retain paths,
session metadata, and command shapes; it is not share-safe. For new project-optimiser work, use
the packaged explicit-input pipeline.
upstream or guessing personal without authorised config evidence.Additional retrospective anti-patterns are in anti-patterns.md.
Requirement Ledger has a stable explicit-evidence v0.1.1 and a v0.2.0-beta.1
prerelease adding daily and weekly review scaffolds. When the host exposes bounded task history, name a Codex
conversation, Agent Skill, or project and the Skill can recover related context, prepare concrete
change cards, and compare the same case before and after an authorised edit. The Python package
does not yet ship its own Codex history adapter.
中文说明 · v0.1 CLI contract · v0.2 host contract · Beta 1 release notes · Codex alignment research · update map · roadmap · open gaps · security
Requirement Ledger does not autonomously edit your project. The CLI gathers and structures evidence; Codex remains the developer, and every real modification stays visible and reviewable.
After installing the Skill, the user names the target rather than diagnosing it:
Use Requirement Ledger to audit this Skill. Find its related Codex history, tell me what should improve, preserve what already works, and show me the change cards before editing anything.
The Codex host should locate the target, find only its related authorised tasks and project records, reconstruct the work history, explain the problems without jargon, preserve working behaviour, prepare small change cards, and stop for authorisation before editing. The user does not need to remember the failures or design YAML, prompts, tests, or repository architecture.
one named target
-> related Codex history
-> repeated problems and personal preferences
-> what must stay
-> concrete change cards
-> authorised visible edit
-> same success and boundary cases before/after
See the three review modes, Codex context discovery, the beginner Skill-personalisation workflow, and the fully synthetic walkthrough.
| Mode | Say this | What it does |
|---|---|---|
| One-time audit | “Audit this conversation / Skill / project.” | Finds related history, prioritises problems, and prepares change cards |
| Daily review | “Review yesterday with Requirement Ledger.” | Reconstructs the previous workday, checks earlier changes, and recommends one improvement |
| Weekly review | “Run the weekly Requirement Ledger review.” | Deduplicates the week, checks maintenance health, and links relevant GitHub or official industry changes |
Beta 1 makes audit, daily, and weekly available through installed review-init.
It creates empty, private review documents; it does not retrieve history, fill in findings, or
schedule reviews. Daily and weekly use the last completed local one-day or seven-day window,
with a configurable boundary hour. The host still needs separately authorised evidence to
produce a meaningful review. Alpha 3's explicit codex-scan remains compatible.
Requirement Ledger AI is the guide and evidence layer, not a hidden patch bot.
After installing this prerelease, create and check an empty daily review:
requirement-ledger review-init --mode daily --target example-project --timezone Asia/Shanghai --at 2026-09-07T09:00:00+08:00 --output daily.md
requirement-ledger review-check daily.md
Use --mode weekly for the preceding seven-day window. --boundary-hour defaults to 8;
--at defaults to the current time for daily/weekly. Audit still requires explicit --start
and --end; all three modes accept an explicit pair instead of an automatic window.
Passing review-check validates the document format, not the truth or completeness of findings.
codex-scan binds exactly one selected Codex JSONL export to a non-home scope root, non-path
target/task references, an explicit IANA timezone, and a half-open [start,end) window.codex-input-envelope/v2 with exact source
digest/size, hashed target/task bindings, physical record accounting, and deliberately partial
target-history coverage. It never claims that one export is the complete Codex history.item_completed records are ordered by first physical occurrence and repeated
snapshots are coalesced by turn + item identity, with the latest valid structured status winning.
A task_complete terminal never hides a later completed item.text, image/audio, Skill, and mention input discriminators are accepted.review-init and review-check remain available and compatible. See the
Alpha 3 release notes for the exact limits and gates.AI-assisted projects usually lose the most valuable information they produce:
Requirement Ledger makes that loop explicit:
explicit Codex/Claude/text input + test log + read-only Git snapshot
-> private evidence
-> conservative attribution
-> quote-free report + DRAFT repair plan
-> host-owned Codex patch
-> digest-bound oracle before/after result
It works with ordinary software projects. The target does not have to use AI, Python, or this Skill; only the evidence collector itself is Python.
requirement-ledger command for Python 3.10–3.13.SourceRef, EvidenceItem, IssueRecord, FixProposal, and ValidationResult
records.upstream, project-local, personal, unknown — with
unknown as the honest default.DRAFT — NOT SENT, not-applied repair plans. No hidden patch, commit, push, Issue, PR,
Release, upload, or telemetry.Clone the repository, then install the package locally:
git clone https://github.com/adand-91/requirement-ledger
cd requirement-ledger
python3 -m pip install .
requirement-ledger --version
The runtime uses only the Python standard library on systems with an IANA timezone database.
Windows installs the standard tzdata package conditionally because Windows does not ship that
database. Build isolation may fetch build tooling; a prepared offline Windows environment must
include tzdata before using python3 -m pip install --no-build-isolation --no-deps ..
To install this exact prerelease without cloning:
python3 -m pip install \
https://github.com/adand-91/requirement-ledger/releases/download/v0.2.0-alpha.1/requirement_ledger-0.2.0a1-py3-none-any.whl
The repository is also a self-contained agent Skill:
# Codex
git clone https://github.com/adand-91/requirement-ledger ~/.codex/skills/requirement-ledger
# Claude Code
git clone https://github.com/adand-91/requirement-ledger ~/.claude/skills/requirement-ledger
The Skill tells the host when to gather evidence, when to stop at a proposal, and how to hand a reviewed plan back to the ordinary coding workflow. It does not grant new permissions.
This command does not inspect a repository, a home directory, or a real conversation:
requirement-ledger demo --output-dir /tmp/requirement-ledger-demo
find /tmp/requirement-ledger-demo -maxdepth 1 -type f -print
It writes five files:
01-evidence.private.json raw synthetic evidence; private format
02-analysis.json conservative issue candidates
03-proposals.json DRAFT — NOT SENT, not-applied