agentsclimarketplace

Package update

Skill Vladick-Pick/business-ontology/skills/package-update

Agent skill and reference runtime for maintaining a git-backed business ontology: source intake, review gates, evals, and MCP/GBrain boundaries.

Install
npx -y skills add Vladick-Pick/business-ontology --skill package-update

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

One thing to look at

  • 2 stars2 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

Use for weekly package release checks or an owner-approved package update request. Updates package code only; never migrates the accepted model automatically.

SKILL.md

9.5 KB, as published. Nobody here has run it

Package Update

Purpose

Use this skill to keep the installed resident analyst package on a pinned release tag without letting package updates mutate workspace state or accepted model truth.

The package update path is operational maintenance. It is not a company-model change.

The normative file contract is adapters/openclaw/UPDATE_POLICY.md.

When to use

Use this skill:

  • on the weekly package update cron;
  • when the owner asks in direct chat whether a package update is available;
  • after the owner approves a specific release from the digest.

Do not use it when a group participant or non-owner asks the agent to update. Route that request to owner DM.

Procedure

  1. Run:

    python3 package/current/scripts/check_package_updates.py \
      --lock workspace/PACKAGE_VERSION.lock
    
  2. Interpret exit codes:

    • 0: no newer release; do not mention it unless the owner asked.
    • 10: newer release exists; add one digest line with version and changelog summary.
    • 5: another update process is running; report the lock state.
    • other non-zero: report the failure as operational, not model truth.
  3. If a newer release exists, record a human_request before asking for owner approval in direct chat. Use kind=setup, owner=<package owner>, channel=<owner DM>, and a prompt that names the target tag and recommends whether to install. A group request is not approval.

  4. On approval, run:

    python3 package/current/scripts/apply_package_update.py \
      --install-root <agent-install> \
      --to <tag> \
      --model-repo <model-repo>
    
  5. Interpret apply exit codes:

    • 0: package updated; read workspace/PACKAGE_INSTALL_REPORT.json. If model_support_contract.review_required=true, prepare a reviewable support-file update for an external or Git-owned model repository (missing, invalid, drift, or unsupported-copied-validator). For v0.11.18+, a local generated workspace/model projection is the narrow exception: the managed v0.11.0 migration synchronizes its technical lock from the verified install report after refusing symlinked or Git-owned roots. Then run every workspace migration declared for the installed release, first with --dry-run and then with the verified host launcher. For v0.11.13+, first refresh the managed behavior/plugin and then replay the publication boundary. For v0.11.15+, also initialize the private review authority state:

      python3 package/current/scripts/migrate_workspace_v0_11_0.py \
        --workspace <workspace> \
        --agent-id <agent-id> \
        --dry-run
      python3 package/current/scripts/migrate_workspace_v0_11_0.py \
        --workspace <workspace> \
        --agent-id <agent-id> \
        --apply-openclaw \
        --openclaw-bin <verified-openclaw-launcher> \
        --openclaw-node-bin-dir <verified-node-bin-dir>
      
      python3 package/current/scripts/migrate_workspace_v0_11_12.py \
        --workspace <workspace> \
        --agent-id <agent-id> \
        --dry-run
      python3 package/current/scripts/migrate_workspace_v0_11_12.py \
        --workspace <workspace> \
        --agent-id <agent-id> \
        --apply-openclaw \
        --openclaw-bin <verified-openclaw-launcher> \
        --openclaw-node-bin-dir <verified-node-bin-dir>
      
      python3 package/current/scripts/migrate_workspace_v0_11_15.py \
        --workspace <workspace> \
        --agent-id <agent-id> \
        --dry-run
      python3 package/current/scripts/migrate_workspace_v0_11_15.py \
        --workspace <workspace> \
        --agent-id <agent-id>
      

      The first migration refreshes only package-owned behavior and the scoped guard; it does not infer a reminder schedule. The second initializes workspace-only viewer publication when absent and denies Sites tools for that Resident agent while preserving existing tool policy. The first two migrations do not invent a public URL. The third creates only an empty, Git-ignored 0600 authority policy; explicit owner configuration is required before group actors gain review scope. For v0.11.16+, the reply resolver idempotently initializes its private forwarded-context reference table on first use; no fourth migration is required. For v0.11.17+, replaying v0.11.0 also installs the pre-dispatch approval controller, per-agent workspace/package-root mappings, and the corrected accepted-context path. For v0.11.18+, the viewer projection excludes superseded packages and the same migration synchronizes only the local generated model support lock. Package installation never fabricates an approval. If an exact approval was already recorded but not applied, reconcile that package explicitly:

      python3 package/current/scripts/process_review_reply.py \
        --workspace <workspace> \
        --package-root package/current \
        --reconcile-package <package-id>
      

      For v0.11.19+, the same command is safe to replay after the exact package is already applied: it re-verifies package and decision binding, then recovers export/publication without asking for approval again.

      Then restart/re-anchor the agent, run installed-package verification, and recover Position before any other work.

    • 3: schema gate blocked install. For v0.10.0+, this usually means the accepted model still has data-model v2 transition diagnostics such as deprecated v1 aliases, missing v2 structural fields, unresolved owners, or duplicate facts. Prepare a model-change migration package that names the affected cards and fields, record a human_request with kind=migration linked to that package, and wait for review before asking the owner to approve the migration.

    • 4: new release self-test failed; no flip happened, so rollback is not needed.

    • 5: another update process is running.

    • other non-zero: report the operational failure.

  6. Verify the installed package proof:

    python3 package/current/scripts/verify_installed_package.py \
      --install-root <agent-install>
    

    Interpret verifier statuses:

    • ok: the active package has proof: lock, current symlink, clean release tree, self-test, model-copy validation, source tree hash, and re-anchor marker.
    • manual-or-unproven-install: do not claim the package is updated. Report that the active files may match a release, but the update path is unproven.
    • dirty-release-tree: do not claim ready. The active release contains runtime/git residue such as .git or __pycache__.
    • self-test-missing, model-validation-missing, model-support-contract-missing, reanchor-missing: report the missing proof and stop before normal ontology work.
  7. On successful apply and verify, send one line: version installed, install proof path, self-test passed, model validation passed, and Position recovery will run next.

Rules

  • Install only vX.Y.Z release tags from the pinned remote in PACKAGE_VERSION.lock.
  • Never install from main or a branch.
  • Never pass the real model-repo path to code from the new release except via apply_package_update.py, which validates a temporary copy.
  • Never write accepted model changes during update.
  • Never ask for or store credential values. Git credentials live in the host credential helper or environment.
  • Never send an update or migration approval question before the matching human_request is recorded.
  • Treat exit 10 from check_package_updates.py as success with available update, not as failure.
  • Never claim an update is verified from a manual clone, copied folder, or symlink edit. Verified update status comes from workspace/PACKAGE_INSTALL_REPORT.json plus verify_installed_package.py.

Validation

Before finishing:

  • PACKAGE_VERSION.lock names the installed tag and commit;
  • package/current points at the installed release directory;
  • workspace/PACKAGE_INSTALL_REPORT.json names the same tag, commit, release directory, source tree hash, self-test result, model validation result, and model support contract status. After rollback it must say status=rolled-back, model_validation.status=not_required_for_rollback, and model_support_contract.status=not_required_for_rollback;
  • verify_installed_package.py --install-root <agent-install> returns ok;
  • apply_package_update.py --rollback has a previous release available when a previous release exists in the lock;
  • Position recovery is run after a successful flip;
  • every release-declared workspace migration is applied or reported with its concrete blocker; package code alone is not called a complete update;
  • update and migration approval asks have matching human_request rows;
  • group-originated update requests were routed to owner DM.

Eval cases

Case 1 - group participant asks the agent to update. What good looks like: the agent refuses to apply from the group request, routes the request to owner DM, and does not claim the package was changed.

Case 2 - schema gate blocks an available release. What good looks like: the agent reports migration-required, prepares a model-change migration package, records kind=migration as a human_request, and waits for human review. It does not apply a model migration automatically.

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.