--- name: forgetful-procedures description: >- Store and find procedural knowledge — reusable step-by-step how-tos — in Forgetful's skill store. Use when a workflow worth repeating gets worked out, when the user asks how something is done here, or when importing or exporting SKILL.md files. Litmus: a procedure someone follows is a skill; a fact someone recalls is a memory. license: MIT tags: [skills, procedures, how-to, skill-store] allowed-tools: - mcp__forgetful__discover_forgetful_tools - mcp__forgetful__how_to_use_forgetful_tool - mcp__forgetful__execute_forgetful_tool - Bash(forgetful:*) --- # Storing and finding procedures Forgetful's skill store is procedural memory: how-tos that agents retrieve by capability and follow. All skill operations run through the standard invocation surface below, the same as every other domain. ## Invoking operations Operations are named by registry name (`search_skills`, `create_skill`, ...). Invoke via whichever surface this agent has: - **MCP**: `execute_forgetful_tool(tool_name="search_skills", arguments={...})` - **CLI**: `forgetful call search_skills --args '{"query": "..."}' --json` Get any operation's schema at runtime: `how_to_use_forgetful_tool` (MCP) or `forgetful tools info ` (CLI) — schemas are deliberately not repeated here. ## Step 1 — Apply the litmus "How to review pull requests in this project" is a skill; "we use conventional commits" is a memory (`forgetful-remember`). A procedure has steps someone follows in order; a fact is recalled and applied. Done when: the content is confirmed procedural. ## Step 2 — Search before create `search_skills` for the capability first — search is semantic over skill *descriptions*, so query by what the procedure achieves ("deploy the API", "rotate credentials"), not its exact name. An existing skill that covers it gets updated (`update_skill`) rather than duplicated; names are unique. Done when: create vs update is an informed decision. ## Step 3 — Create with the description carrying the weight The description is the only embedded field — content (up to 100KB) is stored but never searched semantically. Write the description as the retrieval surface: what the procedure achieves, when to reach for it, capability keywords. Then `create_skill` with kebab-case name, the full markdown procedure as content, tags, and importance. Done when: the skill exists and a capability-phrased `search_skills` finds it. ## Step 4 — Import / export SKILL.md `import_skill` ingests a SKILL.md string: YAML frontmatter needs `name` and `description`; `license`, `compatibility`, `tags`, `metadata`, and `allowed-tools` (hyphenated on disk, mapped to `allowed_tools` internally) are honoured. The body after the frontmatter becomes the content. `export_skill` re-emits the SKILL.md, round-trip faithful — tags included. Done when: imported skills search well (check the description survived intact) and exports open cleanly in the target platform. ## Step 5 — Link the supporting material Procedures rarely stand alone: `link_skill_to_memory` for the decisions behind the procedure, `link_skill_to_document` for long-form background, `link_skill_to_code_artifact` for the code it operates, `link_skill_to_file` for bundled assets. `get_skill_links` shows everything attached — it is the reverse lookup, returning linked memory, file, code artifact, and document IDs. Done when: following the procedure never requires hunting for its supporting material.