Skip to main content
Glama
jmcdice

Superpowers MCP Server

by jmcdice

use_skill

Load expert-crafted workflows and best practices to guide AI assistants through proven techniques for coding tasks, accessing community and custom skills.

Instructions

Load and read a specific skill to guide your work. Skills contain proven workflows, mandatory processes, and expert techniques.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
skill_nameYesName of the skill to load (e.g., "superpowers:brainstorming", "my-custom-skill")

Implementation Reference

  • Executes the 'use_skill' tool: resolves the skill path, reads and processes the SKILL.md file (extract frontmatter, strip it), constructs a header, and returns the skill content as text.
      if (name === 'use_skill') {
        const { skill_name } = args;
    
        const resolved = resolveSkillPath(skill_name);
    
        if (!resolved) {
          return {
            content: [{
              type: 'text',
              text: `Error: Skill "${skill_name}" not found.\n\nRun find_skills to see available skills.`
            }]
          };
        }
    
        const fullContent = fs.readFileSync(resolved.skillFile, 'utf8');
        const { name: skillDisplayName, description } = extractFrontmatter(resolved.skillFile);
        const content = stripFrontmatter(fullContent);
        const skillDirectory = path.dirname(resolved.skillFile);
    
        const skillHeader = `# ${skillDisplayName || skill_name}
    # ${description || ''}
    # Supporting tools and docs are in ${skillDirectory}
    # ============================================`;
    
        return {
          content: [{
            type: 'text',
            text: `${skillHeader}\n\n${content}`
          }]
        };
      }
  • Registers the 'use_skill' tool in the list of available tools, including its name, description, and input schema.
    {
      name: 'use_skill',
      description: 'Load and read a specific skill to guide your work. Skills contain proven workflows, mandatory processes, and expert techniques.',
      inputSchema: {
        type: 'object',
        properties: {
          skill_name: {
            type: 'string',
            description: 'Name of the skill to load (e.g., "superpowers:brainstorming", "my-custom-skill")'
          }
        },
        required: ['skill_name']
      }
    }
  • Helper function used by 'use_skill' to resolve a skill name to its actual SKILL.md file path, prioritizing personal skills unless prefixed with 'superpowers:'.
    function resolveSkillPath(skillName) {
      const forceSuperpowers = skillName.startsWith('superpowers:');
      const actualSkillName = forceSuperpowers ? skillName.replace(/^superpowers:/, '') : skillName;
    
      // Try personal skills first (unless explicitly superpowers:)
      if (!forceSuperpowers && personalSkillsDir) {
        const personalPath = path.join(personalSkillsDir, actualSkillName);
        const personalSkillFile = path.join(personalPath, 'SKILL.md');
        if (fs.existsSync(personalSkillFile)) {
          return {
            skillFile: personalSkillFile,
            sourceType: 'personal',
            skillPath: actualSkillName
          };
        }
      }
    
      // Try superpowers skills
      if (superpowersSkillsDir) {
        const superpowersPath = path.join(superpowersSkillsDir, actualSkillName);
        const superpowersSkillFile = path.join(superpowersPath, 'SKILL.md');
        if (fs.existsSync(superpowersSkillFile)) {
          return {
            skillFile: superpowersSkillFile,
            sourceType: 'superpowers',
            skillPath: actualSkillName
          };
        }
      }
    
      return null;
    }
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions that skills 'guide your work' and contain 'proven workflows, mandatory processes, and expert techniques,' which gives some behavioral context about the content. However, it doesn't disclose critical traits like whether this is a read-only operation, if it requires authentication, what happens on invocation (e.g., if it modifies state), or any rate limits—leaving significant gaps for a tool that loads resources.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized with two sentences that are front-loaded: the first states the core action, and the second elaborates on what skills contain. There's no wasted text, though it could be slightly more structured (e.g., by explicitly mentioning the parameter).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has one parameter with full schema coverage and no output schema, the description provides basic purpose and content context. However, for a tool that loads resources to 'guide your work,' it lacks details on what the output entails (e.g., structured data, instructions), behavioral traits, or differentiation from siblings, making it minimally adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the parameter 'skill_name' fully documented in the schema. The description doesn't add any meaning beyond what the schema provides (e.g., it doesn't explain skill naming conventions or provide examples beyond the schema's 'e.g.'). Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Load and read') and resource ('a specific skill'), explaining it provides workflows, processes, and techniques. However, it doesn't explicitly distinguish this from the sibling 'find_skills' tool, which likely searches for skills rather than loading one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by stating skills 'guide your work' and contain workflows, suggesting this tool is for accessing predefined guidance. However, it doesn't explicitly state when to use this versus 'find_skills' or provide any exclusions or prerequisites for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jmcdice/superpower-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server