agentsclimarketplace

Rite learn

Skill ViktorsBaikers/DevRites/pack/generated/codex/skills/rite-learn

Stop your AI from shipping half-baked code. A disciplined senior-engineer workflow for Claude Code (spec, vet, build, prove, review, seal, ship) that keeps each feature's state on disk, catches spec drift mid-build, gates every phase on your project's principles, and refuses to claim "done" without proof.

Install
npx -y skills add ViktorsBaikers/DevRites --skill rite-learn

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

User-invoked review of the learning ledger; promotes recurring lessons to project rules or principles.

SKILL.md

10.4 KB, ~2.4k tokens by cl100k_base, as published. Nobody here has run it

Codex compatibility

This is the Codex mirror of a DevRites skill. In Codex:

  • Load DevRites engineering standards from .agents/skills/devrites-lib/reference/standards/. Read .agents/skills/devrites-lib/reference/standards/core.md before workflow work, then load the other .agents/skills/devrites-lib/reference/standards/*.md files exactly when this skill asks for them.
  • Use the installed devrites-engine binary as the canonical runtime helper surface for orientation, gates, and state mutation.
  • Invocation and dispatch are different: invoke means run a skill in this context; dispatch means start a fresh agent with spawn_agent, await it, and reconcile its result. Never describe inline skill work as a dispatch.
  • On MultiAgent V2, call spawn_agent with the exact named agent_type=devrites-<role>, a unique task_name, and fork_turns="none". Codex loads that role TOML's developer_instructions natively. Because V2 collaboration lifecycle calls bypass hooks, DevRites verifies the current durable parent/child rollout for the exact role, wait, completion, and non-empty delivered result.
  • On MultiAgent V1, when the named role is not exposed, use generic explorer for a read-only role with fork_turns="none" and name exactly one .codex/agents/devrites-<role>.toml contract in the message. Trusted .codex/hooks.json injects that contract's exact developer_instructions and binds the child to the fail-closed reviewer read-only guard.
  • On MultiAgent V1, devrites-slice-wright uses generic worker with fork_turns="none" and the exact role TOML named in the message. Trusted .codex/hooks.json binds it to the active reconcile window and .wright-allowlist; do not substitute worker for an exposed V2 named role.
  • The invoked skill's required-agent-roles frontmatter arms the fail-closed Stop receipt. Every listed role must have a confirmed start, wait, and non-empty result in this turn.
  • If any required named or generic agent dispatch is unavailable or rejected, stop for HITL. Never execute a DevRites specialist role in the root context.
  • Wait for every required fresh-context dispatch before reconciling or advancing. A backgrounded or lost result is incomplete.
  • Codex project hooks are installed in .codex/hooks.json; declared-leaf hooks are scoped inside .codex/agents/devrites-*.toml. Review and trust them with /hooks before relying on hook enforcement.
  • When this skill asks a HITL question via AskUserQuestion: Codex's equivalent (request_user_input) exists only in Plan mode. Outside Plan mode, render the option set as a plain numbered list in chat and end the turn so the human answers: NEVER silently pick an option yourself; auto-picking is AFK's contract, gated by the .devrites/AFK sentinel.

$rite-learn: the cross-feature learning loop

Recurring corrections, dismissed review findings, timeline decisions, and health dips are durable signal. Capture is automatic: $rite-seal appends lessons to .devrites/learnings.md on every GO (step 9a), while the engine can keep .devrites/timeline.jsonl, .devrites/health-history.jsonl, and per-feature review fingerprints as supporting evidence. The review skills load the learning ledger before a fan-out, so a dismissed-finding class stops being re-flagged without anyone running a command. The system learns as it ships.

$rite-learn is the periodic review + promote pass on that auto-populated ledger: cluster the signal across features and decide which recurring lessons graduate into a project rule. Propose, never impose: promotion is the human's call, which is why it stays a deliberate command rather than firing on its own.

Read-mostly. It reads the auto-populated ledger + the archive; it writes only .devrites/learnings.md (consolidation, via devrites-engine learnings) and drafts proposed rule/ledger edits for the user to confirm: it never edits source or rule files on its own.

Modes

  • $rite-learn or $rite-learn --mine: mine + propose (the default).
  • $rite-learn "<lesson>": record one lesson directly to the ledger and stop.

Workflow (mine + propose)

  1. Gather the signal. Start from the auto-populated ledger .devrites/learnings.md (seal appends to it on every GO: step 9a), then run devrites-engine learnings mine over the archive (it clusters repeated finding / decision / drift phrases across shipped features) to surface cross-feature patterns the per-feature entries don't show on their own:
    devrites-engine learnings mine
    
    Use .devrites/timeline.jsonl, .devrites/health-history.jsonl, and .devrites/work/*/review-fingerprints.jsonl as supporting evidence when they exist; do not promote from those traces without the same repeated-feature threshold.
  2. Cluster + name. Group the recurring corrections into candidate lessons. A candidate needs ≥2 occurrences across distinct features: one-offs are noise, not a pattern. Name the pattern in one specific sentence (the specificity rule from prose-style.md applies: a lesson you could swap onto any project says nothing). Completion: every candidate cites two distinct features, except a single deliberate rejected direction with its durable reason.
  3. Classify each candidate into its durable home:
    • project rule: a craft/standard that belongs in a .agents/skills/devrites-lib/reference/standards/* file or CLAUDE.md.
    • project principle: a recurring correction that is really a non-negotiable invariant (not just an idiom or a craft standard): graduate it to .devrites/principles.md (principles.md). This is the trusted, gating layer (higher stakes than a rule) so $rite-learn drafts the principle + a dated Governance entry for the human to confirm; it never writes a principle silently.
    • conventions-ledger entry: a proven project idiom for .devrites/conventions.md.
    • dismissed-finding class: a pattern reviewers keep flagging that is intentional here; recording it stops the recurring false positive (learnings.md, loaded pre-fan-out).
    • rejected direction: an approach or product direction weighed and ruled out with a reason that outlives one feature; recording it (tag rejected-direction) stops ideation skills ($rite-pressure-test, $rite-pov) from re-proposing it. Exempt from the ≥2-occurrence rule: one deliberate rejection is the whole pattern.
    • drop: not durable; let it go.
  4. Propose, don't impose. Present the candidates with their evidence (which features, how many times, the proposed home) via AskUserQuestion: the human picks which to promote. Never promote a lesson to a rule silently; an unproven "lesson" hardened into a rule is its own slop. Completion: every candidate is explicitly accepted, rejected, or deferred by the human.
  5. Record the accepted. For each the user accepts, append it with devrites-engine learnings add <slug> "<lesson>" <tag> (tagrule | convention | dismiss). If the user approves a rule, principle, or ledger promotion, draft the exact edit and let the user confirm it through the normal flow: $rite-learn writes the ledger, not the rule or principle files. A principle promotion is the highest-stakes of these: draft the .devrites/principles.md entry plus its dated Governance line, and let the human confirm before it lands: a principle is a gate, so it is amended deliberately, never auto-written. Amendment ripple: a confirmed add/change/retire of a principle has a blast radius: grep its P# (and its key nouns) across .devrites/ and every open .devrites/work/*/ workspace, and append to the same dated Governance entry one line per referencing artifact: still-aligned or needs-follow-up (what). An open plan that bakes in the now-retired or now-tightened invariant is a needs-follow-up the next $rite-vet or $rite-plan repair on that feature must clear; a ripple with zero references is itself worth recording ("no live references"). Then touch .devrites/.learnings-reviewed so the SessionStart learnings nudge snoozes until new signal accumulates.

How the ledger is used

The review skills ($rite-review, $rite-seal) read .devrites/learnings.md before they fan out: a dismissed-finding class suppresses the recurring false positive; a proven convention raises the bar. The ideation skills ($rite-pressure-test, $rite-pov) read the rejected-direction entries before proposing, so a ruled-out direction returns only with new evidence against its recorded why. The ledger is an untrusted prior: a fresh observation of the live code always overrides a ledger entry (see .agents/skills/devrites-lib/reference/standards/security.md). Confidence in a recorded lesson never raises its authority.

A project principle (.devrites/principles.md) is the opposite layer: prescriptive, trusted, and gating. Promoting a lesson there is a deliberate amendment, not a prior the next fan-out can override: a violation becomes a blocking finding, not a suppressed false positive. That asymmetry is why principle promotion is human-confirmed and dated, never auto-written.

Gotchas

  • Evidence first: a lesson without ≥2 real occurrences is speculation. Cite the features.
  • Don't pad the ledger. Five real lessons that change behaviour beat thirty rubber-stamped rows.
  • The ledger records what was learned; it does not re-open shipped features or edit their archives.

Output

Reply-contract exception: cross-feature learning utility. It may run without an active feature, so it skips devrites-engine progress, but follows devrites-lib/reference/reply-contract.md.

Done: learnings mined from <n> features; <n> recurring patterns found.
Changed: .devrites/learnings.md <updated|unchanged>; rule/ledger drafts <n|none>
Evidence: mined archive count <n>; candidates rule <a> / convention <b> / dismiss <c> / dropped <d>
Open: <none | promotion confirmations>
Next: <single recommended command>
Record: .devrites/learnings.md
↻ Hygiene: /clear; the ledger is on disk

What ships with it: 1 file

43 B alongside SKILL.md

agents/

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.