{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=dotisacat/agent-plugin-inventory@0.1.0","method":"GET","rel":"https://rote.dev/rels/bootstrap-and-run","requiresConsent":true,"responseMediaType":"text/x-shellscript"},"inspect":{"command":"rote play inspect https://play.modiqo.ai/dotisacat/agent-plugin-inventory@0.1.0","effect":"read-only"},"installCliOnly":{"effect":"installs the rote CLI, nothing else","href":"https://play.modiqo.ai/install","method":"GET","rel":"https://rote.dev/rels/install-cli","requiresConsent":true,"responseMediaType":"text/x-shellscript"},"run":{"command":"rote play run https://play.modiqo.ai/dotisacat/agent-plugin-inventory@0.1.0","effect":"executes the play locally after consent","headless":{"approvalAssertion":"--yes","approvalRequiredBeforeInvocation":true,"commandTemplate":"rote play run https://play.modiqo.ai/dotisacat/agent-plugin-inventory@0.1.0 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"Your harness extensions accumulate like browser toolbars -- this inventories them. Four jobs, two steps: (1) Claude Code plugins -- every entry in installed_plugins.json (name, version, scope, marketplace, install/update timestamps), cross-referenced against settings.json's enabledPlugins map (a plugin absent from that map is treated as enabled by Claude Code's own default, disclosed rather than guessed disabled) and measured on disk -- present/missing/empty/inaccessible, plus an apparent-size byte count (POSIX st_size, no \u0060du\u0060 dependency, matching agent-disk-tax's own approach); (2) personal skills under ~/.claude/skills/* (name, frontmatter description FIRST LINE truncated to 80 characters, file mtime) -- no other file content is ever read, from a personal skill or from a skill bundled inside an installed plugin; (3) known marketplaces from known_marketplaces.json (name, last-sync time when known_marketplaces.json actually records one -- never guessed when it does not); (4) Codex plugin-equivalents where pr","distribution":{"digest":"sha256:cf4c4ed01fb7106852dd3cf4802306791c3ca132c4069e8c1a3c0d9a768a3839","mediaType":"application/vnd.modiqo.rote-flow","size":42111,"verifiedBy":"rote verifies the downloaded archive against this digest before it runs"},"effects":{"credentialsProvidedBy":"runner","credentialsRemainLocal":true,"declaredWrites":[],"publisherReceivesCredentials":false},"id":"https://play.modiqo.ai/dotisacat/agent-plugin-inventory@0.1.0","inputPolicy":{"optionalWithDefault":"show_default_and_accept_override","optionalWithoutDefault":"omit_unless_supplied","required":"ask","secrets":"collect_locally_outside_conversation"},"links":{"docs":"https://rote.dev","page":"https://play.modiqo.ai/dotisacat/agent-plugin-inventory@0.1.0","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/dotisacat/agent-plugin-inventory@0.1.0.json"},"name":"agent-plugin-inventory","owner":{"kind":"user","slug":"dotisacat"},"parameters":[{"default":30,"description":"(1-365) marketplace sync older than this is stale-flagged","example":30,"input":{"allowCustom":true,"choices":[],"label":"Stale days"},"name":"stale_days","required":false,"type":"integer"}],"preparation":[{"action":{"command":"rote play inspect https://play.modiqo.ai/dotisacat/agent-plugin-inventory@0.1.0 --json","effect":"read-only"},"step":1,"type":"inspect_local_readiness"},{"references":["/parameters"],"step":2,"type":"collect_parameters"},{"references":["/parameters","/requirements","/effects"],"step":3,"type":"review"},{"consentBoundary":"the user approves the exact play and parameter values","references":["/parameters","/requirements","/effects"],"step":4,"type":"obtain_run_consent"},{"action":{"command":"rote play run https://play.modiqo.ai/dotisacat/agent-plugin-inventory@0.1.0","headlessCommandTemplate":"rote play run https://play.modiqo.ai/dotisacat/agent-plugin-inventory@0.1.0 <name=value...> --yes"},"preservesAcquisitionBoundaries":["adapter_selection","oauth_dcr","google_discovery","static_token_setup","runtime_security_checks"],"requiresConsent":true,"step":5,"type":"run"}],"producedBy":{"roteVersion":"0.77.0"},"publishedAt":"2026-09-02T21:19:11.55922+00:00","reference":"dotisacat/agent-plugin-inventory@0.1.0","requirements":{"adapters":[],"browser":{"dependencies":[],"runtime":false,"signIn":false},"localTools":["python3"],"roteCli":{"minimumVersion":"0.62.0"},"sessions":false},"resolution":"pinned","schema":"rote.play.v1","stats":{"downloads":1,"installs":0},"steps":{"count":2,"names":["assess","inventory"]},"title":"agent-plugin-inventory","type":"play","version":"0.1.0","visibility":"public"}