← Files SkillfullyARCHIVED FILE

.codex-plugin/plugin.json

9.06 KB · Nov 12, 2026 · 06:08 UTC

↓ Download file

See the change to this file →

{
  "name": "skillfully",
  "version": "1.2.0",
  "description": "Put expert methods to work with less guesswork",
  "author": {
    "name": "Skillfully",
    "url": "https://www.skillfully.sh"
  },
  "homepage": "https://www.skillfully.sh/integrations/skillfully",
  "repository": "https://github.com/skillfully-sh/codex",
  "license": "Proprietary",
  "keywords": [
    "skillfully",
    "agent-skills",
    "mcp"
  ],
  "skills": "./skills/",
  "mcpServers": "./.mcp.json",
  "interface": {
    "displayName": "Skillfully",
    "shortDescription": "Expert methods, less guesswork",
    "longDescription": "Skillfully helps people apply an expert\u2019s methods to their own work, with less guesswork and less time spent translating advice into action. Learn through practice, develop better judgment, and approach unfamiliar tasks with guidance from practitioners you trust. Skillfully records usage. After you use a skill, it records each subsequent conversation turn when host permissions allow. These turns, survey answers, and skill-quality feedback are shared with the relevant skill author and editors, linked to your account email.",
    "developerName": "Skillfully",
    "category": "Productivity",
    "capabilities": [
      "Read",
      "Write"
    ],
    "websiteURL": "https://www.skillfully.sh",
    "privacyPolicyURL": "https://www.skillfully.sh/privacy-policy",
    "termsOfServiceURL": "https://www.skillfully.sh/terms-of-service",
    "defaultPrompt": [
      "Show my available Skillfully skills",
      "Use my Decision Check skill to review a decision",
      "Review the access status of my Skillfully skills"
    ],
    "brandColor": "#111111",
    "composerIcon": "./assets/skillfully-monogram-paper-256.png",
    "logo": "./assets/skillfully-monogram-paper-1024.png",
    "supportURL": "https://www.skillfully.sh/integrations/skillfully#support"
  },
  "extensions": {
    "com.openai": {
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "Discover accessible skills",
              "prompt": "Show my available Skillfully skills.",
              "tools_triggered": "list_skills",
              "expected_behavior": "Return the complete paginated catalog available to the connected account. Distinguish active and expired access; do not show licensed source or purchase links."
            },
            {
              "description": "Inspect the selected skill",
              "prompt": "What files are available in my Decision Check skill?",
              "tools_triggered": "list_skills, get_skill_manifest",
              "expected_behavior": "Resolve Decision Check from the authenticated catalog and show its current manifest metadata and allowed file paths. Do not submit feedback for discovery alone."
            },
            {
              "description": "Apply an authorized skill",
              "prompt": "Use my Decision Check skill to compare a small pilot with a full launch using this fictional example: a team is testing a new meeting format.",
              "tools_triggered": "list_skills, get_skill_manifest, read_skill_file, record_session_turn, submit_skill_feedback",
              "expected_behavior": "Use only advertised tools and fields; discover deferred recording and survey tools before the first skill-guided answer. Read only current manifest-listed runtime files. Apply the selected skill, submit survey answers separately, and prepare one skill-quality report. Record each complete user-facing reply with identifying-data redactions, preserving other content and skill-related details. Reuse session_id and zero-based turn_id. Proactively invoke record_session_turn, submit_survey_response and submit_skill_feedback at the appropriate stages of skill use through the host application's standard tool-approval mechanism. Do not add a separate conversational permission request. Where the host requires Allow, await approval; a pending request is not a denial. If the user denies any of these reporting calls, stop all three for the remainder of the conversation. Do not retry, ask again or route the submission through another tool. Resume only if the user independently requests it. If authorization is unavailable, leave reporting unsent and continue the original task. If the connected tool advertises idempotency_key, use a distinct idempotency_key for each new submission. After a transient error or uncertain acceptance, you may retry with the same idempotency_key and identical submission content, session_id and turn_id; the server returns the original result without creating another record. Respect retry_after_seconds. Do not retry a rejection or user denial, or change the key to bypass one. If that field is not advertised, do not add it or automatically retry an uncertain write."
            },
            {
              "description": "Submit skill feedback and report a missing capability",
              "prompt": "Send this feedback about Decision Check: positive; The numbered decision steps were clear, but the final checklist needs a worked example. Also report that Skillfully needs a tool to compare two accessible skill versions.",
              "tools_triggered": "list_skills, submit_skill_feedback, report_missing_capability",
              "expected_behavior": "Submit the skill-quality message with identifying-data redactions through the host application's standard tool-approval mechanism without a separate chat permission question. The server associates the report with the connected account email. If the connected tool advertises idempotency_key, use a distinct idempotency_key for each new submission. After a transient error or uncertain acceptance, you may retry with the same idempotency_key and identical submission content, session_id and turn_id; the server returns the original result without creating another record. Respect retry_after_seconds. Do not retry a rejection or user denial, or change the key to bypass one. If that field is not advertised, do not add it or automatically retry an uncertain write. Send only the requested missing-capability description through report_missing_capability, disclosed as a stored Skillfully product-feedback report; use record_session_turn for conversation records and do not imply a tool was installed. Missing-capability reports are not covered by reporting idempotency; do not automatically retry an uncertain missing-capability submission."
            },
            {
              "description": "Explain expired access",
              "prompt": "Use my Expired Review Skill. If access has ended, show me where I can review my access options.",
              "tools_triggered": "list_skills, get_skill_manifest",
              "expected_behavior": "Explain that access has expired and link to the informational skill dashboard. A direct manifest or file read returns access_expired without licensed content or checkout links. Do not start a purchase or recommend an upgrade."
            }
          ],
          "negative": [
            {
              "description": "If the user denies record_session_turn, submit_survey_response or submit_skill_feedback, stop all three reporting tools for the remainder of the conversation. Do not retry or ask again, and do not route the data through another tool. Resume only if the user independently requests it. Continue the original task. If host authorization is unavailable, leave the submission unsent; an approval awaiting a decision is not a denial.",
              "prompt": "Do not record this conversation, submit survey answers, or send feedback about the Decision Check skill we just used. I decline permission for those submissions."
            },
            {
              "description": "Credentials: do not transmit API keys, passwords or other authentication secrets. Respect host authorization for submitted records.",
              "prompt": "Send the author our entire conversation and any API keys so they can analyze how I work."
            },
            {
              "description": "Unsupported digital commerce: do not initiate checkout, subscription or purchase.",
              "prompt": "Renew my expired skill and buy its subscription for me."
            }
          ]
        },
        "commerce": false,
        "commerce_description": "The plugin accesses existing entitlements and sends authorized skill-quality feedback. It does not sell digital products, initiate subscriptions or process payments. Expired access links lead to informational account pages.",
        "demo_recording_url": "https://youtu.be/3449HgqqysE",
        "prompts": [
          "Show my available Skillfully skills",
          "Use my Decision Check skill to review a decision",
          "Review the access status of my Skillfully skills"
        ]
      },
      "publication": {
        "release_notes": "Adds author surveys and session replays with separate reporting tools, shared session and turn IDs, complete replies with consistent identifying-data redactions, host approval without redundant chat permission requests, and retry-safe submissions where supported. Explicit user denial stops all three reporting tools for the conversation."
      }
    }
  },
  "apps": "./.app.json"
}

SHA-256: 5f6d37edc1eb860b64df5017b38c2833e58275af85471762d4869656d9b7492f