[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CS3EPHA8HP4MK44HS83KYM":3,"skill-same:01M6CS3EPHA8HP4MK44HS83KYM":69},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":41,"linkOnly":42,"markdownContent":43,"markdownBody":44,"frontMatter":45,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":6,"ownerHtmlUrl":51,"ownerBlogUrl":52,"ownerDescription":53,"updatedAt":54,"install":55,"resources":68},"01M6CS3EPHA8HP4MK44HS83KYM","fix-feedback",null,"Triage and fix issues reported via Ghost's \u002Ffeedback command. MUST READ when the user points you to a feedback folder, mentions a feedback report, or asks you to investigate a bug that happened during a GHOST session. Covers: retrieving feedback from remote servers, reading transcripts and debug request dumps, root-cause categorization, and the fix workflow.","mrtolkien\u002FGHOST","mrtolkien","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F8489650?v=4","01M6CS32Q934XBQQE8BDV5Z6W2","Tolki","01M6CS32VBCD47F5E27WF9W6FC",5,"MIT","https:\u002F\u002Fgithub.com\u002Fmrtolkien\u002FGHOST\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ffix-feedback\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"feedback","fix feedback","fix","report","issues","fix workflow","investigate","ghost","triage","command","read","user","debug","session","bug","root-cause","workflow","2026-11-10 10:12:30",false,"---\nname: fix-feedback\ndescription: >-\n  Triage and fix issues reported via Ghost's \u002Ffeedback command. MUST READ when the user\n  points you to a feedback folder, mentions a feedback report, or asks you to\n  investigate a bug that happened during a GHOST session. Covers: retrieving feedback\n  from remote servers, reading transcripts and debug request dumps, root-cause\n  categorization, and the fix workflow.\n---\n\n# Fix Feedback\n\n## Getting Feedback\n\nFeedback is saved on running GHOST instances, not locally. GHOST runs on servers\n`192.168.1.3` through `192.168.1.7`. The user will typically tell you which server and\nfolder name. If they don't specify the server, ask.\n\n```bash\n# List available feedback on a server\nssh root@192.168.1.X 'ls ~\u002FGHOST\u002Ffeedback\u002F'\n\n# Copy the feedback folder locally\nscp -r root@192.168.1.X:~\u002FGHOST\u002Ffeedback\u002F\u003Cfolder-name>\u002F \u002Ftmp\u002Fghost-feedback\u002F\n```\n\nEach feedback folder contains:\n\n| File            | Contents                                                      |\n| --------------- | ------------------------------------------------------------- |\n| `feedback.md`   | Issue description, session ID, operator comment               |\n| `transcript.md` | Last 10 messages with tool calls and results                  |\n| `ghost.db`      | Full SQLite database snapshot (sessions, messages, knowledge) |\n\n## Process\n\n1. Read `feedback.md` for the issue description and **session ID**\n2. Read `transcript.md` for the conversation leading to the issue\n3. If the issue looks like a provider\u002FAPI problem, pull debug request dumps (see below)\n4. Analyze: what the OPERATOR asked, what GHOST did, what went wrong\n5. Categorize the root cause:\n   - **Bad tool use**: wrong tool chosen, bad parameters, missing tool\n   - **Bad response**: tone, content, format issues\n   - **UI problem**: Discord rendering, embed issues\n   - **Prompt issue**: system prompt missing context, wrong instructions\n   - **Code bug**: tool implementation, chat loop, provider issue\n   - **Provider issue**: wrong model output, empty response, malformed API response\n6. Locate the relevant source files and propose a fix\n7. Implement the fix, run `just ci`\n\n## Reading the Transcript\n\n`transcript.md` contains messages in chronological order. Pay attention to:\n\n- Tool call names and arguments — did GHOST pick the right tool?\n- Tool results — did the tool return what was expected?\n- The sequence of messages leading up to the issue\n- System messages that may have influenced behavior\n\n## Debug Request Dumps\n\nWhen `debug.save_requests = true` is enabled (it is on all servers), raw LLM\nrequest\u002Fresponse pairs are saved as JSON files in `~\u002FGHOST\u002Fdebug\u002Frequests\u002F`.\n\n**Filename format**: `{timestamp}_{session_id_last8}_{iteration}.json`\n\nUse the session ID from `feedback.md` to find matching files:\n\n```bash\n# Find debug dumps for a specific session (last 8 chars of session ID)\nssh root@192.168.1.X 'ls ~\u002FGHOST\u002Fdebug\u002Frequests\u002F | grep \u003Clast-8-chars>'\n\n# Copy them locally\nscp root@192.168.1.X:~\u002FGHOST\u002Fdebug\u002Frequests\u002F*\u003Clast-8-chars>*.json \u002Ftmp\u002Fghost-feedback\u002F\n```\n\nEach JSON file contains:\n\n```json\n{\n  \"timestamp\": \"...\",\n  \"provider\": \"openrouter\",\n  \"model\": \"claude-opus-4-6\",\n  \"session_id\": \"...\",\n  \"iteration\": 3,\n  \"status\": 200,\n  \"duration_ms\": 4521,\n  \"request\": { \"...full request body...\" },\n  \"response\": { \"...full response body...\" }\n}\n```\n\n**When to check debug dumps:**\n\n- Empty or nonsensical GHOST responses (check if the API returned an error or empty\n  content)\n- Suspiciously wrong tool calls (check if the request included the right tools\u002Fsystem\n  prompt)\n- Rate limiting or timeout issues (check `status` and `duration_ms`)\n- Model mismatch suspicions (check `model` vs what was configured)\n\nNote: files are pruned to the last 500 by default (`debug.max_saved_requests`), so very\nold sessions may no longer have dumps available.\n\n## Querying the Database\n\nIf the transcript is insufficient, query `ghost.db` with a uv script (see `\u002Fuv-scripts`\nskill). Useful queries:\n\n```python\n# All messages for a session\ncursor.execute(\"\"\"\n    SELECT role, content, tool_calls, created_at\n    FROM message WHERE session_id = ? ORDER BY created_at\n\"\"\", (session_id,))\n\n# Recent sessions with their message counts\ncursor.execute(\"\"\"\n    SELECT s.id, s.title, COUNT(m.id) as msg_count, s.created_at\n    FROM session s LEFT JOIN message m ON s.id = m.session_id\n    GROUP BY s.id ORDER BY s.created_at DESC LIMIT 20\n\"\"\")\n```\n\n## Rules\n\n- **Never modify a test to make it pass.** Fix the code under test instead.\n- **Never weaken assertions.** If a test catches the bug, that's working as intended.\n- Always run `just ci` before considering the fix complete.\n","# Fix Feedback\n\n## Getting Feedback\n\nFeedback is saved on running GHOST instances, not locally. GHOST runs on servers\n`192.168.1.3` through `192.168.1.7`. The user will typically tell you which server and\nfolder name. If they don't specify the server, ask.\n\n```bash\n# List available feedback on a server\nssh root@192.168.1.X 'ls ~\u002FGHOST\u002Ffeedback\u002F'\n\n# Copy the feedback folder locally\nscp -r root@192.168.1.X:~\u002FGHOST\u002Ffeedback\u002F\u003Cfolder-name>\u002F \u002Ftmp\u002Fghost-feedback\u002F\n```\n\nEach feedback folder contains:\n\n| File            | Contents                                                      |\n| --------------- | ------------------------------------------------------------- |\n| `feedback.md`   | Issue description, session ID, operator comment               |\n| `transcript.md` | Last 10 messages with tool calls and results                  |\n| `ghost.db`      | Full SQLite database snapshot (sessions, messages, knowledge) |\n\n## Process\n\n1. Read `feedback.md` for the issue description and **session ID**\n2. Read `transcript.md` for the conversation leading to the issue\n3. If the issue looks like a provider\u002FAPI problem, pull debug request dumps (see below)\n4. Analyze: what the OPERATOR asked, what GHOST did, what went wrong\n5. Categorize the root cause:\n   - **Bad tool use**: wrong tool chosen, bad parameters, missing tool\n   - **Bad response**: tone, content, format issues\n   - **UI problem**: Discord rendering, embed issues\n   - **Prompt issue**: system prompt missing context, wrong instructions\n   - **Code bug**: tool implementation, chat loop, provider issue\n   - **Provider issue**: wrong model output, empty response, malformed API response\n6. Locate the relevant source files and propose a fix\n7. Implement the fix, run `just ci`\n\n## Reading the Transcript\n\n`transcript.md` contains messages in chronological order. Pay attention to:\n\n- Tool call names and arguments — did GHOST pick the right tool?\n- Tool results — did the tool return what was expected?\n- The sequence of messages leading up to the issue\n- System messages that may have influenced behavior\n\n## Debug Request Dumps\n\nWhen `debug.save_requests = true` is enabled (it is on all servers), raw LLM\nrequest\u002Fresponse pairs are saved as JSON files in `~\u002FGHOST\u002Fdebug\u002Frequests\u002F`.\n\n**Filename format**: `{timestamp}_{session_id_last8}_{iteration}.json`\n\nUse the session ID from `feedback.md` to find matching files:\n\n```bash\n# Find debug dumps for a specific session (last 8 chars of session ID)\nssh root@192.168.1.X 'ls ~\u002FGHOST\u002Fdebug\u002Frequests\u002F | grep \u003Clast-8-chars>'\n\n# Copy them locally\nscp root@192.168.1.X:~\u002FGHOST\u002Fdebug\u002Frequests\u002F*\u003Clast-8-chars>*.json \u002Ftmp\u002Fghost-feedback\u002F\n```\n\nEach JSON file contains:\n\n```json\n{\n  \"timestamp\": \"...\",\n  \"provider\": \"openrouter\",\n  \"model\": \"claude-opus-4-6\",\n  \"session_id\": \"...\",\n  \"iteration\": 3,\n  \"status\": 200,\n  \"duration_ms\": 4521,\n  \"request\": { \"...full request body...\" },\n  \"response\": { \"...full response body...\" }\n}\n```\n\n**When to check debug dumps:**\n\n- Empty or nonsensical GHOST responses (check if the API returned an error or empty\n  content)\n- Suspiciously wrong tool calls (check if the request included the right tools\u002Fsystem\n  prompt)\n- Rate limiting or timeout issues (check `status` and `duration_ms`)\n- Model mismatch suspicions (check `model` vs what was configured)\n\nNote: files are pruned to the last 500 by default (`debug.max_saved_requests`), so very\nold sessions may no longer have dumps available.\n\n## Querying the Database\n\nIf the transcript is insufficient, query `ghost.db` with a uv script (see `\u002Fuv-scripts`\nskill). Useful queries:\n\n```python\n# All messages for a session\ncursor.execute(\"\"\"\n    SELECT role, content, tool_calls, created_at\n    FROM message WHERE session_id = ? ORDER BY created_at\n\"\"\", (session_id,))\n\n# Recent sessions with their message counts\ncursor.execute(\"\"\"\n    SELECT s.id, s.title, COUNT(m.id) as msg_count, s.created_at\n    FROM session s LEFT JOIN message m ON s.id = m.session_id\n    GROUP BY s.id ORDER BY s.created_at DESC LIMIT 20\n\"\"\")\n```\n\n## Rules\n\n- **Never modify a test to make it pass.** Fix the code under test instead.\n- **Never weaken assertions.** If a test catches the bug, that's working as intended.\n- Always run `just ci` before considering the fix complete.\n",{"name":5,"description":7},"main","083d96429a2d05526f8a294b83c74f0336670def",".agents\u002Fskills\u002Ffix-feedback",0,"https:\u002F\u002Fgithub.com\u002Fmrtolkien\u002FGHOST","https:\u002F\u002Fgithub.com\u002Fmrtolkien","https:\u002F\u002Fblog.tolki.dev","Data Engineer \u002F Esports \u002F Keyboards","2026-04-24 15:41:08",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add mrtolkien\u002FGHOST --skill fix-feedback",{"tool":61,"command":62},"bunx","bunx skills add mrtolkien\u002FGHOST --skill fix-feedback",{"tool":64,"command":65},"pnpm","pnpm dlx skills add mrtolkien\u002FGHOST --skill fix-feedback","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmrtolkien\u002FGHOST\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ffix-feedback\u002FSKILL.md",true,[],[70,96,120,138,147,158],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":41},"01M6CS613RWD9CFJ3KFX47V1DS","system-management","Use when reading or changing GHOST configuration (providers, models, timing, compaction, services, any config.toml key), adding or switching LLM providers, answering questions about GHOST's own features or capabilities, a CLI tool is missing or \"not found\", services need starting\u002Fstopping\u002Fdebugging, updating GHOST to a newer version, managing the Nix shell environment, or troubleshooting GHOST setup.","https:\u002F\u002Fgithub.com\u002Fmrtolkien\u002FGHOST\u002Fblob\u002Fmain\u002Fassets\u002Fskills\u002Fsystem-management\u002Fskill.md",[],[77,78,79,80,81,82,83,84,85,86,87,88,31,89,90,91,92,93,94,95],"system management","management","system","shell","cli","nix","config","setup","debugging","capabilities","services","Providers","tool","troubleshooting","environment","use","version","models","configuration",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":113,"publishedAt":41},"01M6CS5XTK2884R9HE15YR8YZM","writing-skills","Use when creating new skills, editing existing skills, or verifying skills work before deployment","https:\u002F\u002Fgithub.com\u002Fmrtolkien\u002FGHOST\u002Fblob\u002Fmain\u002Fassets\u002Fskills\u002Fsuperpowers\u002Fwriting-skills\u002Fskill.md",[102,107,110],{"categoryNo":103,"categoryName":104,"taxonomyType":105,"taxonomyTypeDesc":106},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":108,"categoryName":109,"taxonomyType":105,"taxonomyTypeDesc":106},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":111,"categoryName":112,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000036","内容创作者",[114,115,116,117,118,92,119],"writing skills","writing","coding","work","editing","deployment",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":128,"publishedAt":41},"01M6CS5V737R1DVB3TZEK0C6WT","writing-plans","Use when you have a spec or requirements for a multi-step task, before touching code. Write comprehensive implementation plans assuming the engineer has zero context for our codebase and questionable taste.","https:\u002F\u002Fgithub.com\u002Fmrtolkien\u002FGHOST\u002Fblob\u002Fmain\u002Fassets\u002Fskills\u002Fsuperpowers\u002Fwriting-plans\u002Fskill.md",[126,127],{"categoryNo":108,"categoryName":109,"taxonomyType":105,"taxonomyTypeDesc":106},{"categoryNo":111,"categoryName":112,"taxonomyType":21,"taxonomyTypeDesc":22},[129,115,130,131,132,116,133,134,92,135,136,137],"writing plans","spec","code","ZeRO","write","context","engineer","implementation","task",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":144,"publishedAt":41},"01M6CS5S5S0YY56686G5CQ0WMP","verification","Use when about to claim work is complete, fixed, or passing, before committing or creating PRs. Requires running verification commands and confirming output before making any success claims. Evidence before assertions, always.","https:\u002F\u002Fgithub.com\u002Fmrtolkien\u002FGHOST\u002Fblob\u002Fmain\u002Fassets\u002Fskills\u002Fsuperpowers\u002Fverification\u002Fskill.md",[],[140,116,117,92,145,146],"evidence","claim",{"skillNo":148,"name":149,"nameZh":6,"description":150,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":151,"categories":152,"keywords":154,"publishedAt":41},"01M6CS5PD2ZSFWYRDZSACNTAJY","tdd","Use when implementing any feature or bugfix, before writing implementation code. Write the test first. Watch it fail. Write minimal code to pass.","https:\u002F\u002Fgithub.com\u002Fmrtolkien\u002FGHOST\u002Fblob\u002Fmain\u002Fassets\u002Fskills\u002Fsuperpowers\u002Ftdd\u002Fskill.md",[153],{"categoryNo":103,"categoryName":104,"taxonomyType":105,"taxonomyTypeDesc":106},[149,115,131,155,116,133,92,156,136,157],"first","minimal","test",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":165,"publishedAt":41},"01M6CS5K5WE2SHF1YV8D9C4C77","systematic-debugging","Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes","https:\u002F\u002Fgithub.com\u002Fmrtolkien\u002FGHOST\u002Fblob\u002Fmain\u002Fassets\u002Fskills\u002Fsuperpowers\u002Fsystematic-debugging\u002Fskill.md",[164],{"categoryNo":103,"categoryName":104,"taxonomyType":105,"taxonomyTypeDesc":106},[166,85,167,92,116,157,38],"systematic debugging","behavior"]