{"id":321086,"date":"2026-06-05T06:13:49","date_gmt":"2026-06-05T06:13:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/magick-ai-abilities\/"},"modified":"2026-06-05T06:13:31","modified_gmt":"2026-06-05T06:13:31","slug":"npcink-abilities-toolkit","status":"publish","type":"plugin","link":"https:\/\/cn.wordpress.org\/plugins\/npcink-abilities-toolkit\/","author":16786901,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.4.0","stable_tag":"0.4.0","tested":"7.0","requires":"7.0","requires_php":"8.0","requires_plugins":null,"header_name":"Npcink Abilities Toolkit","header_author":"Npcink","header_description":"Standalone WordPress Abilities API package toolkit for safely exposing agent-callable abilities.","assets_banners_color":"d3e7fe","last_updated":"2026-06-05 06:13:31","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":33,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","changelog"],"tags":{"0.4.0":{"tag":"0.4.0","author":"muze233","date":"2026-06-05 06:13:31"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3561889,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3561889,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3561889,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3561889,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.4.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[256265,15643,2353,569],"plugin_category":[],"plugin_contributors":[265919],"plugin_business_model":[],"class_list":["post-321086","plugin","type-plugin","status-publish","hentry","plugin_tags-abilities-api","plugin_tags-agents","plugin_tags-ai","plugin_tags-automation","plugin_contributors-muze233","plugin_committers-muze233"],"banners":{"banner":"https:\/\/ps.w.org\/npcink-abilities-toolkit\/assets\/banner-772x250.png?rev=3561889","banner_2x":"https:\/\/ps.w.org\/npcink-abilities-toolkit\/assets\/banner-1544x500.png?rev=3561889","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/npcink-abilities-toolkit\/assets\/icon-128x128.png?rev=3561889","icon_2x":"https:\/\/ps.w.org\/npcink-abilities-toolkit\/assets\/icon-256x256.png?rev=3561889","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Npcink Abilities Toolkit provides a standalone toolkit for plugin authors who want to expose safe, agent-callable abilities through the WordPress Abilities API.<\/p>\n\n<p>The plugin owns ability registration helpers, category helpers, schema normalization, annotation normalization, and optional compatibility projection for Magick AI when Magick AI is installed.<\/p>\n\n<p>It can be used by any WordPress plugin or client that consumes the WordPress Abilities API. Magick AI is one optional consumer, not the owner of this plugin.<\/p>\n\n<p>It does not own model routing, cloud execution, billing, quota, workflow runtime, MCP governance, or final write approval\/governance.<\/p>\n\n<p>Read-only host composition recipe metadata may document how hosts can compose abilities, but those records do not run queues, schedule jobs, execute workflows, or create a second registry.<\/p>\n\n<p>Host composition recipe metadata is available through read-only helpers and Abilities API discovery abilities for hosts that need catalog discovery without execution ownership.<\/p>\n\n<h3>External Services and Remote Requests<\/h3>\n\n<p>This plugin does not automatically contact Magick AI, model providers, analytics services, tracking services, or cloud services.<\/p>\n\n<p>Some abilities can prepare request payloads for a separate host or cloud add-on, but this plugin does not send those payloads to an external service by itself.<\/p>\n\n<p>The <code>magick-ai\/upload-media-from-url<\/code> ability can download a media file from a URL provided by an authenticated caller when an approved host runtime commits that ability. In that case WordPress sends an HTTP request to the caller-provided URL in order to fetch the media file for the local media library. The remote endpoint is chosen by the caller, not by this plugin.<\/p>\n\n<h3>Requirements<\/h3>\n\n<ul>\n<li>WordPress 7.0 or later. This release intentionally targets the WordPress Abilities API baseline available in WordPress 7.0+.<\/li>\n<li>PHP 8.0 or later.<\/li>\n<\/ul>\n\n<h3>Public API<\/h3>\n\n<ul>\n<li><code>magick_ai_abilities_register_category( $category_id, $args )<\/code><\/li>\n<li><code>magick_ai_abilities_register_readonly( $ability_id, $definition )<\/code><\/li>\n<li><code>magick_ai_abilities_register_write_proposal( $ability_id, $definition )<\/code><\/li>\n<li><code>magick_ai_abilities_normalize_schema( $schema, $default_type )<\/code><\/li>\n<li><code>magick_ai_abilities_normalize_annotations( $annotations, $risk_level )<\/code><\/li>\n<li><code>magick_ai_abilities_get_registered()<\/code><\/li>\n<li><code>magick_ai_abilities_get_workflow_definitions()<\/code><\/li>\n<li><code>magick_ai_abilities_get_workflow_definition( $recipe_id )<\/code><\/li>\n<\/ul>\n\n<h3>Test Page<\/h3>\n\n<p>After activation with a Magick AI host plugin, open Magick AI -&gt; Abilities in wp-admin. When this standalone package is installed without a Magick AI host menu, open Tools -&gt; Abilities API Packages instead.<\/p>\n\n<p>The page verifies Abilities API availability, fetches the authenticated REST ability and category catalogs, and can enable\/run a demo readonly ability.<\/p>\n\n<h3>Built-In Abilities<\/h3>\n\n<p>The plugin includes migrated low-risk WordPress read abilities, deterministic comment helpers, and host-governed WordPress write\/destructive abilities using preserved <code>magick-ai\/*<\/code> ids for compatibility.<\/p>\n\n<p>It also includes <code>npcink-abilities-toolkit\/wp-diagnostics-summary<\/code>, a redacted WordPress-only diagnostics summary for Abilities API clients. This summary intentionally omits Magick AI settings, MCP settings, API keys, database names, table prefixes, filesystem paths, error logs, and external HTTP probes.<\/p>\n\n<p>It also includes <code>magick-ai\/search-posts<\/code> and <code>magick-ai\/search-post-meta<\/code>, bounded local WordPress search helpers for keyword and explicit post-meta discovery. These are read-only helpers and do not call external search indexes or mutate content.<\/p>\n\n<p>It also includes <code>npcink-abilities-toolkit\/list-workflow-recipes<\/code> and <code>npcink-abilities-toolkit\/get-workflow-recipe<\/code>, read-only host composition recipe metadata discovery abilities. These expose metadata only and do not execute workflow runtime behavior.<\/p>\n\n<p>Core governance handoff docs include a catalog snapshot, permission matrix, and schema boundary audit for hosts that consume this plugin through <code>magick-ai-core<\/code>.<\/p>\n\n<h3>Developer Smoke Test<\/h3>\n\n<p>When the plugin is installed in a local WordPress site, run:<\/p>\n\n<pre><code>WP_PATH=\/path\/to\/wordpress composer smoke:wp\n<\/code><\/pre>\n\n<p>For isolated bounded-chain performance validation, run:<\/p>\n\n<pre><code>composer perf:smoke\n<\/code><\/pre>\n\n<!--section=changelog-->\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Added read-only host composition recipe metadata discovery abilities and public PHP helpers.<\/li>\n<li>Added Core governance handoff documentation, a catalog snapshot fixture, a permission matrix, and a schema boundary audit.<\/li>\n<li>Hardened write-like contracts with <code>requires_approval<\/code>, explicit dry-run and commit defaults, and bounded idempotency keys.<\/li>\n<li>Expanded smoke coverage for REST-exposed governance metadata and schemas.<\/li>\n<li>Added a consumer example for preparing Core proposal payloads from discovered ability contracts.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Added package and sub-pack filters so hosts can keep a full catalog by default or opt into a light <code>core_wordpress_read<\/code> profile.<\/li>\n<li>Kept public third-party helpers read-only\/write-proposal oriented and documented that final commit authorization belongs to the host runtime.<\/li>\n<li>Made Magick AI catalog projection thin by default and added a projection-row filter for host-owned policy expansion.<\/li>\n<li>Preserved migrated <code>magick-ai\/*<\/code> ids as compatibility ids while documenting the future deprecation\/successor migration rule.<\/li>\n<li>Added explicit read\/comment sub-pack maps as the split point for future source-file extraction.<\/li>\n<li>Verified Magick AI catalog compatibility against the local development site.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Stabilized the public helper contract and ability metadata rules.<\/li>\n<li>Documented host-governed write\/destructive semantics and the Magick AI integration boundary.<\/li>\n<li>Added first-party ability pack grouping and 0.2 candidate verification evidence.<\/li>\n<li>Strengthened lightweight tests for schema controls, Magick catalog projection, provider defaults, and invalid ability ids.<\/li>\n<li>Verified Local WP smoke coverage and Magick AI consumer split-boundary checks.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial standalone development release.<\/li>\n<li>Added migrated WordPress read abilities, deterministic comment helpers, host-governed write\/destructive abilities, and standalone redacted WordPress diagnostics.<\/li>\n<\/ul>","raw_excerpt":"Standalone WordPress Abilities API package toolkit for registering agent-callable abilities.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/321086","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=321086"}],"author":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/muze233"}],"wp:attachment":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=321086"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=321086"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=321086"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=321086"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=321086"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=321086"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}