SkillNote report verification

Type: agentic-system-analyses/types/agentic-system-verification.md

Verification

The reports support a bounded architectural account. No material blocker was found. The inventories remain selective: additional local draft extraction, collection-picker cleanup and an alternative feedback consumer are retained as limits below. None overturns the distinction between retained procedural guidance, structural admission, external-host application and unestablished task improvement.

I read all handed reports, their types and the record contract. The four correction-answer inputs were empty. The structural report-check reported none; there is no structural failure requiring a routed blocker. I judged support independently of the analysts' validation statements. SRC-1 HEAD equals the reviewed revision and the source checkout has no reported working-tree changes. Inspection used only source text at the registered boundary; no target code, tests, services, models or examples were executed. Source reads below supply implementation or doctrine/design evidence, never observed operation or causal support.

Record and passage dispositions

Every declaration, its source anchors, status fields and applicable admission/read-back fields was assessed. The following groups cover all declared records; grouping here does not merge their identities.

Records checked Independent source tracing and disposition
RT-RTE-registry-write, MEM-OBJ-skill, MEM-OBJ-content-version SRC-1, backend/app/api/skills.py, backend/app/db/models/skill.py, backend/app/db/models/skill_content_version.py, src/lib/skills-store.ts: create/update, snapshot creation, set-latest, restore, browser write/read and error fallback were traced. Current rows, selected historical content and browser-local state are different surfaces. Snapshots omit extra frontmatter and source lineage; restore creates a snapshot whereas set-latest reselects one. The distinction between the version counter and staged active content is supported by the connector branches. No universal approval or history guarantee is emitted. Supported, with the additional draft-inventory limit below.
RT-RTE-project-sync, RT-RTE-context-hooks SRC-1, plugin/hooks/hooks.json, plugin/hooks-handlers/sync.sh, plugin/hooks-handlers/subagent-context.sh, plugin/hooks-handlers/compact-context.sh, plugin/hooks-handlers/skill-used-context.sh, plugin-codex/hooks/handlers/sync.sh: event wiring, configured collection selection, full-body fetch, frontmatter/URL transformation, file writes, stale deletion and cache guards were checked. Codex's project lock and hook-mode stdout suppression are implementation-specific. Subagent output contains pointers, not full bodies; PostCompact prints a catalog reminder and treats empty selection differently from normal sync. The reports correctly withhold model-visible PostCompact reinjection and host compaction semantics. Supported; picker cleanup is an additional path, not evidence that the sync-handler guards are false.
RT-RTE-mcp-delivery, RT-CMP-host-model, RT-BAP-host-instructions SRC-1, backend/mcp_server.py, plugin-openclaw/skillnote/SKILL.md, and the sync writer above: provider queries current skill rows, reads environment collection filters, substitutes URLs and returns prose. The parser does not establish connection-URL scoping. External hosts select and interpret instructions; model version, endpoint mutability and parameter changes remain uninspected. Delivery does not establish compliance, task execution or sandboxing. Supported.
RT-RTE-bundle-install, MEM-OBJ-skill-version SRC-1, backend/app/api/publish.py, backend/app/api/downloads.py, backend/app/db/models/skill_version.py, cli/src/commands/add.ts, cli/src/util/zip.ts: publishing retains independent archive bytes and metadata rather than copying an existing archive body into the current row. CLI active-version/current fallback, optional supplied-checksum agreement and archive-entry checks precede adapter copies. Versioned download rejects disabled releases; current download rejects any published skill with no active release. This is narrower than system-wide revocation and is not semantic quality or authentic authorship. Supported.
RT-RTE-source-import SRC-1, backend/app/services/imports/importer.py, backend/app/api/imports.py: validation and insert/skip/rename/replace branches, the same-source metadata-only branch and refresh-apply stub were checked. The reported nonuniform body refresh is supported. Remote source bytes, full inspector behavior and universal lineage remain outside the established finding.
RT-RTE-openclaw-use, RT-RTE-adapter-update SRC-1, plugin-openclaw/skillnote/SKILL.md, plugin-openclaw/skillnote/sync.sh, backend/app/api/openclaw.py: foreground description-first selection, requested body caps, consent for the AGENTS include, sidecar generation, cached instruction sync and daily unequal-version update branches were traced. The fallback replaces skill text and VERSION, not the sync script despite its comment. Neither the resolver docstring nor a package-install request establishes resolver execution, improved machinery or successful deployment. Supported; an alternative reporting consumer is incomplete below.
RT-RTE-browser-sync, MEM-RTE-inbound-resolution SRC-1, extensions/claude-ai/src/background.ts, backend/app/api/claude_ai.py: upload/delete/group/list switch branches, best-effort group retirement, bearer admission, reverse-import slug collision, policy dispatch, staging, explicit staged-pointer resolution, promotion and deletion were checked. A successful group acknowledgment can coexist with retirement errors. Ask preserves current content while advancing the counter; local resolution can delete staged text and retain an audit ID. These findings do not establish full conflict-detector correctness, remote acceptance or semantic preservation. Supported.
RT-RTE-feedback-report, MEM-OBJ-comment, MEM-OBJ-usage-event, EPI-OBJ-feedback-text, EPI-RTE-comment-check, EPI-RTE-comment-retention, EPI-RTE-rating-admission SRC-1, plugin/skills/complete-skill/SKILL.md, plugin/hooks-handlers/skill-used-context.sh, backend/mcp_server.py, backend/app/api/comments.py, backend/app/schemas/comment.py, backend/app/api/analytics.py, backend/app/api/openclaw.py, backend/app/db/models/comment.py, backend/app/db/models/skill_usage_event.py: reporting prompts, MCP current-version lookup, REST caller-version attribution/deduplication, optional comment usage-reference checks, rated-agent fan-out and body-only edit/delete were checked. Usage admission validates references and drops unknown slugs; it retains a supplied summary, not raw dialogue. Range/reference consistency does not verify outcomes. Deleting a comment does not delete the separately emitted rating in that handler. Supported.
MEM-RTE-feedback-catalog, EPI-OBJ-context-bundle, EPI-RTE-bundle-metadata, EPI-RTE-bundle-selection SRC-1, backend/app/api/openclaw.py: the entire context-bundle handler was traced in order. Alphabetic prelimit precedes 30-day usage/comment-mean ranking and final truncation; the request task summary is not a server ranking input. Any warning or low mean yields needs_review, not withdrawal; no warning/rating can yield healthy. The latest comment is truncated to 200 characters. Arithmetic derivation is conditional on retained rows, not a license for report truth. Feedback changes delivered candidates without revising instruction bodies. Supported.
MEM-OBJ-watcher-state, MEM-RTE-trace-reporting SRC-1, plugin-openclaw/skillnote/log-watcher.py, backend/app/api/hooks.py: read-tool path extraction, per-session deduplication, inode/offset state, old-file EOF heuristic and fire-and-forget reporting were traced. The watcher writes call events, not the usage table queried by context-bundle. Session-eval retains truncated supplied text in an analytics field, not a revised procedure. Read detection is not verified application. Supported; no complete event capture or evaluation-driven revision is established.
MEM-RTE-install-maintenance, EPI-RTE-install-maintenance SRC-1, cli/src/index.ts, cli/src/commands/update.ts, cli/src/commands/remove.ts: dispatched update/remove, no-active-release skip, checksum/extraction checks, destination deletion before copy, manifest changes and conditional shared-global retention were checked. They describe the same invocations. No-active-release skips rather than revokes the installed copy. The global registry's full correctness and multi-adapter rollback are not asserted. Supported.
EPI-OBJ-skill-push, EPI-OBJ-skill-content, EPI-CLM-pattern-learning, EPI-CLM-registry-improves SRC-1, plugin/skills/skill-push/SKILL.md, plugin-openclaw/skillnote/SKILL.md, plugin/hooks-handlers/sync.sh: claim wording, approval/trigger guidance and packaging deduction were checked. Static policy text is not a generated instance. Without a corpus, the draft's preservation versus new generalization is indeterminate. Wrapping adds no warrant; configured placeholder substitution is qualified rather than a blanket semantic-equivalence claim. Persistence and feedback consumers support narrower mechanisms than reliable learning or demonstrated improvement. Supported.

The workflow account was checked against SRC-1, plugin/skills/skill-push/SKILL.md, plugin/agents/skill-creator.md, plugin/hooks/hooks.json, backend/app/schemas/skill.py, backend/app/validators/skill_validator.py, backend/app/api/skills.py and the sync handler. The optional inherited-model specialist, permission before unsolicited drafting, existence/collection checks, preview approval, POST/PATCH, invalid-collection recovery and later configured fetch are source-supported. Prompt quality checks and API structural checks have different owners and criteria. The workflow does not invent a mandatory child launch, isolated return, independent task oracle or successful execution. Its annotations add responsibility and delivery timing without duplicating route identities.

The epistemic ledger's split between requested model judgment, structural checks, retention, arithmetic metadata and operational ranking is supported. Doctrine-only drafting/review functions are compatible with a wired prompt/API container. Source acquisition has unknown warrant; feedback is attributed rather than verified. Neither acceptance of a submission nor release status licenses claim truth. The bounded conclusion does not assert a system-complete absence of semantic acceptance, weight learning, reflection or self-improvement.

Relations and reconciliation

I checked all four explicit Part of: relations: the memory catalog and epistemic metadata/selection records are contained in the OpenClaw route, and inbound resolution is contained in the browser route. Their parts retain their own fields; containment does not establish resolver activation or inherit a stronger status.

The reconciliation correctly supersedes the epistemic maintenance route by its memory counterpart, with matching source, progression and evidence. Publication/add is not that maintenance identity. Valid text/store and endpoint/function overlaps need not be superseded: current rows, snapshots, archive references, attributed feedback and recomputed responses have different consumers or scope. Memory's deeper staging and parser inspection does not contradict epistemic's declared inspection gaps. Comment fan-out connects stores without equating their invalidation. All memory integration issues receive dispositions. There are no unresolved-conflict paragraphs or source-supported cross-report contradictions requiring correction. Claims of improvement are retained as doctrine, not promoted by convergence among analysts.

Omission questions and stopping decision

The search basis was the frozen tracked tree, hook manifest, CLI dispatch and producer/consumer references, not only the submitted anchors. I investigated three consequential questions: whether conversational traces create another retained candidate; whether selection/cleanup bypasses normal sync cache guards; and whether feedback reaches a later consumer other than context-bundle. The additional mechanisms below make the inventories incomplete, but the reports already disclaim universal history, revocation, semantic evaluation and complete route coverage. No emitted comparison value or complete negative needs repair.

SRC-1, plugin/hooks-handlers/prompt-watch.sh, is synchronously wired by plugin/hooks/hooks.json. Its explicit-save branch emits additionalContext pointing toward skill-push; its linguistic-signal branch extracts a sentence and writes a local pending draft with the utterance, signal, session and a manual refinement instruction. This is automatic candidate extraction, not automatic registry adoption. A scoped search for draft consumers found this writer, not a wired automatic reload/adoption chain. The file itself affords later human review:

If this looks worth turning into a full skill, run `/skillnote:skill-push` to refine and publish it. Delete this file to dismiss the draft. --- plugin/hooks-handlers/prompt-watch.sh

SRC-1, backend/app/api/setup.py, installs a shell wrapper invoking the picker before interactive Claude launch. In plugin/bin/skillnote-pick, initial cleanup and collection change/skip branches can remove managed copies independently of sync. In particular:

if changed and current is not None: _clean_skills_dir() _run_sync() --- plugin/bin/skillnote-pick

This prevents exporting a handler-local cache guarantee to every shipped installation-management path. It does not contradict the reports' path-scoped cache findings.

SRC-1, plugin-openclaw/skillnote/SKILL.md, supplies a distinct doctrine-level consumer of analytics:

| Past 20 skills, picking accuracy degrades | Bias toward skills with high call_count/avg_rating (visible in <host>/v1/analytics/top-skills); a future version offloads picking to a server-side resolver | --- plugin-openclaw/skillnote/SKILL.md

I traced its producer in SRC-1, backend/app/api/analytics.py: top-skills combines call counts, SkillRating means and usage outcomes, unlike context-bundle's Comment means. The shipped prompt requests use of those aggregates, but no host execution is evidenced. Searches for context-bundle and session-eval callers also located SRC-1, plugin-openclaw/skillnote-doctor/SKILL.md: its bundle call is a health probe, not demonstrated semantic resolver wiring. The current hook manifest has no Stop evaluation producer. These searches support the reports' caution; they do not establish system-wide absence.

Further optional omission expansion stopped because each selected question has a supported disposition, and no identified challenge remains capable of invalidating the retained central conclusions without first establishing additional evidence. Remaining available files alone do not justify an exhaustive audit. Complete authoring, cleanup and feedback-consumer comparisons must remain withheld as specified below; the architectural distinctions, supported positive routes and unobserved-operation assessments remain publishable.

Blockers

none

Limits

  • RT-RTE-registry-write, EPI-OBJ-skill-push and the memory write-side inventory do not separately retain the synchronous prompt-watch route. SRC-1, plugin/hooks-handlers/prompt-watch.sh and plugin/hooks/hooks.json, establish additionalContext on explicit-save phrases and automatic pending sentence-draft retention on convention signals. Withhold a complete conversational candidate-acquisition or trace-fed draft inventory and any inference that all drafting waits for user approval. The reports' approval claim is scoped to the authoring prompt/API distinction; registry admission, procedural distribution and unestablished benefit remain supported. No automatic later draft consumer was established by the bounded search.
  • RT-RTE-project-sync, MEM-RTE-install-maintenance and the workflow delivery account are not a complete account of installed-copy cleanup. SRC-1, backend/app/api/setup.py and plugin/bin/skillnote-pick, establish interactive-wrapper picker invocation and independent managed-file deletion on selection changes/skip and initial cleanup. Withhold cross-entry-point cache-preservation and withdrawal comparisons; handler-local offline guards, release-gated downloads and the absence of a demonstrated universal revocation guarantee remain supported.
  • RT-RTE-openclaw-use, RT-RTE-feedback-report, MEM-RTE-trace-reporting, MEM-RTE-feedback-catalog and the epistemic bounded conclusion do not enumerate the prompted large-catalog use of analytics top-skills. SRC-1, plugin-openclaw/skillnote/SKILL.md and backend/app/api/analytics.py, establish an alternative requested foreground consumer of call counts and SkillRating aggregates, so watcher/MCP feedback can reach that reporting surface without entering the Comment-based bundle mean. Withhold complete feedback-to-selection lineage comparisons and any inference that the bundle is the only feedback consumer. The records explicitly distinguish the stores and do not deny other reporting consumers; feedback-conditioned capacity, unestablished host compliance and unestablished causal improvement remain valid.