bridge-curator — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited bridge-curator (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
bridge-curator is the periodic background-reflection skill. Once a week (configurable), it walks the Bridge's own state and asks three orthogonal questions:
The output of all three phases is always proposals — markdown files under work/_learning/proposals/ with source.type: curator-suggestion. The curator never edits Bridge files directly. All accepts happen via /bridge-learn.
This is the deliberate inversion of the autonomy-maximalist curator pattern observed in some agentic frameworks (e.g. Hermes Agent's background-curator-fork). See rules/learning-autonomy.md § Layer B for the full design rationale.
/bridge-curator, "bridge curator", "curator", etc./schedule, if configured inbridge-config.yaml.learning.curator.schedule.
auto_surface_in_briefingday (default Sunday), /briefing Stream D adds a "curator due / overdue" one-liner. Running the curator itself stays manual unless user opts into auto-run.
| Argument | Effect | Default |
|---|---|---|
(none) | Run all three passes sequentially | — |
--pass library | Only library consolidation | all |
--pass queue | Only proposal-queue consolidation | all |
--pass user-patterns | Only user-pattern synthesis | all |
--dry-run | Surface findings, do NOT write proposals or user-patterns | false |
--since <date> | Scan window starts at this date (default: last curator run) | last run |
Full procedure in references/library-pass.md.
Scans skills/, protocols/, rules/, docs/. Detects:
skill-usage.jsonl for ≥30 days(if Phase-4 telemetry on); else heuristic via skill-name in work/log.md
trigger phrases in their description fields
exceeds 1536 chars (Skills 2.0 discovery budget)
workflow and could be one skill with internal modes
last_updated: is older than the last editto anything it references
scope: (already caught by /bridge-audit Check 6, but the curator cross-references the audit-history JSON to escalate if recurring)
Each finding becomes a proposal in work/_learning/proposals/.
Full procedure in references/queue-pass.md.
Scans work/_learning/proposals/. Detects:
status: pending and created >30 days agotarget.path and incompatible target.action
an older one (covers same finding plus additional context)
target.path has been edited ingit since the proposal was written (the diff_preview may be stale)
proposals/rejected/ has accumulated>10 entries with the same target.type pattern, suggesting the underlying generator (postmortem questions, audit checks) is producing low-signal proposals that should be filtered upstream
Output: each cluster becomes a meta-proposal — a curator-suggestion that asks /bridge-learn to perform a specific consolidation action (accept-A-reject-B, defer-both, merge into combined).
Full procedure in references/user-pattern-pass.md.
Reads, in this order:
work/log.md last 30 dayswork/done/YYYY-MM/<slug>/STATUS.md postmortems closed in windowwork/_learning/audit-trail.md accept/reject decisions in windowwork/_learning/proposals/rejected/*.md reasons in windowwork/_learning/trigger-corrections.md (if Phase-4 active)Synthesizes 3-8 observations about how the user works. Format:
- <Observation in 1-2 sentences>.
Evidence: <pointers — N postmortems, M rejections, K log entries>
Strength: weak | medium | strongWrites append-only to work/_learning/user-patterns.md under a new section ## YYYY-MM-DD — Weekly synthesis (n=<sessions>, n=<postmortems>).
Does NOT write to MEMORY.md. A strong-pattern observation may produce an additional proposal with target.type: memory that /bridge-learn can accept into the user's MEMORY.md via the normal proposal flow.
Minimum-signal threshold: if window contains fewer than 5 postmortems and 5 accept/reject events combined, the user-pattern pass produces an "insufficient signal" note instead of forced observations.
After running, emit a single block:
═══ Bridge Curator — <YYYY-MM-DD> ═══
Library pass: <N> findings → <K> proposals written
• <severity> <topic-slug> — <one-line>
...
Queue pass: <N> findings → <K> meta-proposals written
• <topic-slug> — <conflict-or-stale-or-supersede>
...
User-patterns: <N> observations appended to work/_learning/user-patterns.md
<K> strong-pattern proposals (target.type: memory)
• <observation excerpt>
...
→ Review via /bridge-learn (current pending: <total>)If --dry-run: same output, but report uses "would write" instead of "wrote", no files touched.
Standard _schema.proposal.yaml with these field defaults:
source:
type: curator-suggestion # NEW source.type enum value
evidence:
- "work/_learning/audit-history/<ts>.json" # if Phase 3 data drove it
- "work/done/<month>/<slug>/STATUS.md#postmortem" # if postmortem drove it
- "skills/<name>/SKILL.md" # the affected file
severity: P2 # default, P1 if recurring or strong
status: pending
scope: core | user (depends on target)
target:
type: skill | standing_order | rule | doc | memory
path: ...
action: edit | delete | rename | create
proposal_type: structured | needs-triageThe source.evidence chain is always concrete — the curator must cite which files / scans led to the finding. No invented proposals.
all three passes return "insufficient signal — run more sessions then re-curate". Friendly message, no error.
into C, queue pass says A is stale) → emit both as separate proposals and let /bridge-learn resolve.
bridge-config.yaml.learning.curator.user_patterns.privacy: strict,observations are written with redacted task slugs and customer names (replaced by <task> / <customer> placeholders) so the file is safe to share. Strict mode is opt-in, not default.
malformed log entry), library + queue still complete. Failures are reported in the curator report, not bubbled as fatal.
pointers, /bridge-learn still gates the apply.
telemetry export.
The curator is a foreground skill invocation; the user sees the report.
Promotion is /bridge-sync territory after /bridge-learn accept flowed it through the normal commit pipeline.
rules/learning-autonomy.md — the design rule this skill embodiesskills/task-close-postmortem/ — Layer 1 proposal generator (postmortem)skills/bridge-audit/ — Layer 1 proposal generator (recurring findings)skills/bridge-learn/ — the review surface that closes the loopwork/_learning/README.md — aggregation layer layoutwork/_learning/user-patterns.md — output target for Pass 3bridge-config.yaml.learning.curator — config block (schedule + pass toggles)~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.