[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71FWFE09MTZVFZS2CY8Y939":3,"skill-same:01M71FWFE09MTZVFZS2CY8Y939":70},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":6,"ownerHtmlUrl":48,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":49,"install":50,"resources":63},"01M71FWFE09MTZVFZS2CY8Y939","python-review-qa-loop",null,"Use when working on Python code changes that should follow this repo's shared review and QA loop. Read the shared workflow docs, make the smallest viable patch, run relevant tests, capture results, and route DB, credentials, secrets, or Garmin password related changes through the shared security guidance.","Andy-CH-BO-AN\u002FAI-running-coach","Andy-CH-BO-AN","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F58759761?v=4","01M71FSKGT9TWBMY2SFP4V2JR8","01M71FSKHQAN25HG2TRY5WVCMG",2,"MIT","https:\u002F\u002Fgithub.com\u002FAndy-CH-BO-AN\u002FAI-running-coach\u002Fblob\u002Fmain\u002Fai\u002Fskills\u002Fpython-review-qa-loop\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"python","python review qa loop","loop","qa","review","code","credentials","workflow","password","repo","security guidance","use","patch","route","shared","tests","db","relevant","python code","when","2026-11-10 10:12:30",false,"---\nname: python-review-qa-loop\ndescription: Use when working on Python code changes that should follow this repo's shared review and QA loop. Read the shared workflow docs, make the smallest viable patch, run relevant tests, capture results, and route DB, credentials, secrets, or Garmin password related changes through the shared security guidance.\n---\n\n# Python Review QA Loop\n\nUse this skill when the task touches Python code, tests, repo workflow\ndocs, or related project automation.\n\n## Read first\n\n- `ai\u002Fshared\u002Finstructions.md`\n- `ai\u002Fshared\u002Freviewer.agent.md`\n- `ai\u002Fshared\u002Fqa.agent.md`\n- When touching tests, also read `ai\u002Fskills\u002Fclean-tests\u002FSKILL.md`.\n\n## Escalate to security review\n\nIf the task touches any of the following, also read\n`ai\u002Fshared\u002Fsecurity.agent.md` before editing or validating:\n\n- database schema, migrations, DB connection settings, import scripts,\n  destructive test setup, or persistence logic\n- credentials, tokens, API keys, `.env` handling, `.env.example`,\n  secret placeholders, or connection strings\n- Garmin account handling, Garmin password flow, or any workflow that\n  could expose Garmin credentials\n\n## How to apply reviewer, QA, and security guidance\n\nDo not assume the platform will automatically spawn separate reviewer,\nQA, or security agents just because this skill is active.\n\nInstead, apply the repo's review loop explicitly:\n\n1. Read the relevant shared guidance files.\n2. Perform one reviewer pass using `ai\u002Fshared\u002Freviewer.agent.md`.\n   Reviewer scope is changed-code review: inspect the diff and affected\n   context for correctness, regressions, maintainability, and security-adjacent\n   risks. Do not ask reviewer to rerun broad or full regression suites.\n   Reviewer may run only tiny targeted checks when needed to confirm a\n   suspected issue.\n3. Perform one QA pass using `ai\u002Fshared\u002Fqa.agent.md`.\n   QA scope is test coverage and regression validation: use the test commands\n   already run by the implementer\u002Freviewer to avoid duplicate work, then fill\n   the remaining coverage gaps and run broader regression only when needed.\n4. If the task touches DB, secrets, `.env`, credentials, or Garmin\n   password\u002Faccount flows, perform one security pass using\n   `ai\u002Fshared\u002Fsecurity.agent.md`.\n\n## Mandatory Reviewer → QA delegation\n\nFor every Python change, including Python test changes, use explicit\ndelegation whenever sub-agent tooling is available. This is mandatory;\nthe user does not need to request it.\n\nReviewer agents are read-only. They must report findings or approval without\nmodifying workspace files; the implementer owns every patch between review\nand QA.\n\n1. Spawn a fresh reviewer sub-agent for the changed-code review.\n2. Wait for the reviewer to explicitly approve the current patch.\n3. If the reviewer requests any change, implement it and return to step 1\n   with a new reviewer. Do not reuse approval for an earlier patch.\n4. Spawn a fresh QA sub-agent only after the fresh reviewer approves the\n   unchanged patch.\n5. If QA requests any change, implement it and return to step 1. Do not send\n   a revised patch directly to QA.\n6. Do not treat self-review, a simulated role, or one agent doing both\n   passes as a substitute for Reviewer → QA.\n\nRun reviewer before QA. Use separate agents even when the change is\nsmall. If a worker slot is temporarily unavailable, wait for a slot and\ncontinue the sequence; only run the passes yourself when sub-agent\ntooling is actually unavailable for the whole task. Report that fallback\nclearly.\n\nFor security review, delegate to a separate security agent whenever the\nruntime supports it. If the user also asks for UI\u002FUX review and the\nruntime supports delegation, spawn a separate UI\u002FUX agent too.\n\nOnly execute the passes in a single Codex run when sub-agent tooling is\nactually unavailable. In that fallback case, report the limitation\nclearly.\n\n## Workflow\n\n1. Read the shared workflow docs listed above.\n2. Inspect the affected code and make the smallest viable change.\n3. Run the most relevant tests locally. Prefer targeted `pytest -q`\n   commands before broader suites.\n4. Capture failures, stack traces, and reproduction steps when tests do\n   not pass.\n5. When sub-agents are available, spawn a fresh reviewer using\n   `ai\u002Fshared\u002Freviewer.agent.md`; wait for explicit approval of the current\n   patch. If the reviewer requests changes, implement them and repeat this\n   step with a new reviewer. Tell the reviewer which tests have already run\n   and ask it to remain read-only and focus on changed code instead of\n   repeating QA's regression work.\n6. Only after reviewer approval, spawn a fresh QA agent using\n   `ai\u002Fshared\u002Fqa.agent.md`; tell QA which tests have already run so it can\n   target unvalidated behavior, missing scenarios, and final regression\n   instead of duplicating reviewer checks. If QA requests changes, implement\n   them and return to step 5 before another QA pass.\n   Save durable artifacts in `tests\u002Freports\u002F` or `tests\u002Fscripts\u002F` when helpful.\n7. If security review was triggered, run a separate security pass and\n   report those checks explicitly.\n8. Summarize what changed, what was tested, and any remaining risk from\n   reviewer, QA, and security checks.\n\n## Browser-assisted QA\n\nIf the task touches dashboard UI, browser-visible output, static assets, or\nfrontend adapter behavior:\n\n1. Prefer Chrome DevTools MCP when available.\n2. Start the local dashboard server on the role-specific port.\n   - QA uses `python3 -m src.dashboard.server --port 8765`\n   - UI\u002FUX review uses `python3 -m src.dashboard.server --port 8766`\n3. Open the matching URL through the browser tool.\n   - QA uses `http:\u002F\u002F127.0.0.1:8765\u002F`\n   - UI\u002FUX review uses `http:\u002F\u002F127.0.0.1:8766\u002F`\n4. Check the rendered page, console messages, network requests, and responsive\n   desktop\u002Fmobile layout.\n5. Save useful screenshots or reports under `tests\u002Freports\u002F`.\n\nIf Chrome MCP is unavailable, use the headless Google Chrome commands in\n`ai\u002Fshared\u002Fuiux.agent.md`.\n\n## Output expectations\n\n- Keep fixes minimal and incremental.\n- Lead review feedback with findings when doing review-only work.\n- Call out exact test commands used.\n- For dashboard\u002Fbrowser work, state whether Chrome MCP or headless Chrome was\n  used and where artifacts were saved.\n- State clearly when tests were not run or when Garmin API calls were\n  intentionally avoided.\n- When you do reviewer \u002F QA \u002F security passes in one run, label them\n  clearly so the user can see each stage happened.\n","# Python Review QA Loop\n\nUse this skill when the task touches Python code, tests, repo workflow\ndocs, or related project automation.\n\n## Read first\n\n- `ai\u002Fshared\u002Finstructions.md`\n- `ai\u002Fshared\u002Freviewer.agent.md`\n- `ai\u002Fshared\u002Fqa.agent.md`\n- When touching tests, also read `ai\u002Fskills\u002Fclean-tests\u002FSKILL.md`.\n\n## Escalate to security review\n\nIf the task touches any of the following, also read\n`ai\u002Fshared\u002Fsecurity.agent.md` before editing or validating:\n\n- database schema, migrations, DB connection settings, import scripts,\n  destructive test setup, or persistence logic\n- credentials, tokens, API keys, `.env` handling, `.env.example`,\n  secret placeholders, or connection strings\n- Garmin account handling, Garmin password flow, or any workflow that\n  could expose Garmin credentials\n\n## How to apply reviewer, QA, and security guidance\n\nDo not assume the platform will automatically spawn separate reviewer,\nQA, or security agents just because this skill is active.\n\nInstead, apply the repo's review loop explicitly:\n\n1. Read the relevant shared guidance files.\n2. Perform one reviewer pass using `ai\u002Fshared\u002Freviewer.agent.md`.\n   Reviewer scope is changed-code review: inspect the diff and affected\n   context for correctness, regressions, maintainability, and security-adjacent\n   risks. Do not ask reviewer to rerun broad or full regression suites.\n   Reviewer may run only tiny targeted checks when needed to confirm a\n   suspected issue.\n3. Perform one QA pass using `ai\u002Fshared\u002Fqa.agent.md`.\n   QA scope is test coverage and regression validation: use the test commands\n   already run by the implementer\u002Freviewer to avoid duplicate work, then fill\n   the remaining coverage gaps and run broader regression only when needed.\n4. If the task touches DB, secrets, `.env`, credentials, or Garmin\n   password\u002Faccount flows, perform one security pass using\n   `ai\u002Fshared\u002Fsecurity.agent.md`.\n\n## Mandatory Reviewer → QA delegation\n\nFor every Python change, including Python test changes, use explicit\ndelegation whenever sub-agent tooling is available. This is mandatory;\nthe user does not need to request it.\n\nReviewer agents are read-only. They must report findings or approval without\nmodifying workspace files; the implementer owns every patch between review\nand QA.\n\n1. Spawn a fresh reviewer sub-agent for the changed-code review.\n2. Wait for the reviewer to explicitly approve the current patch.\n3. If the reviewer requests any change, implement it and return to step 1\n   with a new reviewer. Do not reuse approval for an earlier patch.\n4. Spawn a fresh QA sub-agent only after the fresh reviewer approves the\n   unchanged patch.\n5. If QA requests any change, implement it and return to step 1. Do not send\n   a revised patch directly to QA.\n6. Do not treat self-review, a simulated role, or one agent doing both\n   passes as a substitute for Reviewer → QA.\n\nRun reviewer before QA. Use separate agents even when the change is\nsmall. If a worker slot is temporarily unavailable, wait for a slot and\ncontinue the sequence; only run the passes yourself when sub-agent\ntooling is actually unavailable for the whole task. Report that fallback\nclearly.\n\nFor security review, delegate to a separate security agent whenever the\nruntime supports it. If the user also asks for UI\u002FUX review and the\nruntime supports delegation, spawn a separate UI\u002FUX agent too.\n\nOnly execute the passes in a single Codex run when sub-agent tooling is\nactually unavailable. In that fallback case, report the limitation\nclearly.\n\n## Workflow\n\n1. Read the shared workflow docs listed above.\n2. Inspect the affected code and make the smallest viable change.\n3. Run the most relevant tests locally. Prefer targeted `pytest -q`\n   commands before broader suites.\n4. Capture failures, stack traces, and reproduction steps when tests do\n   not pass.\n5. When sub-agents are available, spawn a fresh reviewer using\n   `ai\u002Fshared\u002Freviewer.agent.md`; wait for explicit approval of the current\n   patch. If the reviewer requests changes, implement them and repeat this\n   step with a new reviewer. Tell the reviewer which tests have already run\n   and ask it to remain read-only and focus on changed code instead of\n   repeating QA's regression work.\n6. Only after reviewer approval, spawn a fresh QA agent using\n   `ai\u002Fshared\u002Fqa.agent.md`; tell QA which tests have already run so it can\n   target unvalidated behavior, missing scenarios, and final regression\n   instead of duplicating reviewer checks. If QA requests changes, implement\n   them and return to step 5 before another QA pass.\n   Save durable artifacts in `tests\u002Freports\u002F` or `tests\u002Fscripts\u002F` when helpful.\n7. If security review was triggered, run a separate security pass and\n   report those checks explicitly.\n8. Summarize what changed, what was tested, and any remaining risk from\n   reviewer, QA, and security checks.\n\n## Browser-assisted QA\n\nIf the task touches dashboard UI, browser-visible output, static assets, or\nfrontend adapter behavior:\n\n1. Prefer Chrome DevTools MCP when available.\n2. Start the local dashboard server on the role-specific port.\n   - QA uses `python3 -m src.dashboard.server --port 8765`\n   - UI\u002FUX review uses `python3 -m src.dashboard.server --port 8766`\n3. Open the matching URL through the browser tool.\n   - QA uses `http:\u002F\u002F127.0.0.1:8765\u002F`\n   - UI\u002FUX review uses `http:\u002F\u002F127.0.0.1:8766\u002F`\n4. Check the rendered page, console messages, network requests, and responsive\n   desktop\u002Fmobile layout.\n5. Save useful screenshots or reports under `tests\u002Freports\u002F`.\n\nIf Chrome MCP is unavailable, use the headless Google Chrome commands in\n`ai\u002Fshared\u002Fuiux.agent.md`.\n\n## Output expectations\n\n- Keep fixes minimal and incremental.\n- Lead review feedback with findings when doing review-only work.\n- Call out exact test commands used.\n- For dashboard\u002Fbrowser work, state whether Chrome MCP or headless Chrome was\n  used and where artifacts were saved.\n- State clearly when tests were not run or when Garmin API calls were\n  intentionally avoided.\n- When you do reviewer \u002F QA \u002F security passes in one run, label them\n  clearly so the user can see each stage happened.\n",{"name":5,"description":7},"main","c8423dc370076b0251f5c049b7c3ea3bc4d17d75","ai\u002Fskills\u002Fpython-review-qa-loop",0,"https:\u002F\u002Fgithub.com\u002FAndy-CH-BO-AN\u002FAI-running-coach","https:\u002F\u002Fgithub.com\u002FAndy-CH-BO-AN","2026-10-23 22:13:05",{"source":8,"skillName":5,"commands":51,"prompt":61,"zipAvailable":62},[52,55,58],{"tool":53,"command":54},"npx","npx skills add Andy-CH-BO-AN\u002FAI-running-coach --skill python-review-qa-loop",{"tool":56,"command":57},"bunx","bunx skills add Andy-CH-BO-AN\u002FAI-running-coach --skill python-review-qa-loop",{"tool":59,"command":60},"pnpm","pnpm dlx skills add Andy-CH-BO-AN\u002FAI-running-coach --skill python-review-qa-loop","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FAndy-CH-BO-AN\u002FAI-running-coach\u002Fblob\u002Fmain\u002Fai\u002Fskills\u002Fpython-review-qa-loop\u002FSKILL.md",true,[64],{"path":65,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":68,"sourceHtmlUrl":69},"agents\u002Fopenai.yaml","REFERENCE","参考文档",291,"https:\u002F\u002Fgithub.com\u002FAndy-CH-BO-AN\u002FAI-running-coach\u002Fblob\u002Fmain\u002Fai\u002Fskills\u002Fpython-review-qa-loop\u002Fagents\u002Fopenai.yaml",[71,96,120,144,161,178],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"publishedAt":38},"01M71FWKE76AC8TMK2CQ19YAY6","token-decrease","Ultra-compressed communication mode. Cuts token usage ~75% by speaking like caveman while keeping full technical accuracy. Supports intensity levels: lite, full (default), ultra, wenyan-lite, wenyan-full, wenyan-ultra. Use when user says \"caveman mode\", \"talk like caveman\", \"use caveman\", \"less tokens\", \"be brief\", \"token decrease\", or invokes \u002Fcaveman. Also auto-triggers when token efficiency is requested.","https:\u002F\u002Fgithub.com\u002FAndy-CH-BO-AN\u002FAI-running-coach\u002Fblob\u002Fmain\u002Fai\u002Fskills\u002Ftoken-decrease\u002FSKILL.md",[],[78,79,80,81,82,83,84,85,29,86,87,88,89,90,91,92,93,94,95,37],"token decrease","token","efficiency","Caveman Mode","communication","lite","ultra","usage","technical","auto","intensity","triggers","accuracy","default","mode","tokens","token efficiency","brief",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":38},"01M71FWHPQQBZWZ9ZHTV2SED9Y","readme-pm-review","Use only when the user explicitly asks for a product-manager style review of a repository README. Read only the README first, do not infer undocumented features, and provide readability feedback, rewrite suggestions, and product-priority recommendations.","https:\u002F\u002Fgithub.com\u002FAndy-CH-BO-AN\u002FAI-running-coach\u002Fblob\u002Fmain\u002Fai\u002Fskills\u002Freadme-pm-review\u002FSKILL.md",[],[103,104,105,22,106,107,108,37,29,109,110,111,112,113,114,115,116,117,118,119],"README","readme pm review","pm","only","first","rewrite","recommendations","for","infer","feedback","do","style","manager","features","repository","read","product",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":126,"publishedAt":38},"01M71FWDWPXVWR0GBB4SSWXPJK","improve-codebase-architecture","Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.","https:\u002F\u002Fgithub.com\u002FAndy-CH-BO-AN\u002FAI-running-coach\u002Fblob\u002Fmain\u002Fai\u002Fskills\u002Fimprove-codebase-architecture\u002FSKILL.md",[],[127,128,129,130,131,110,132,133,134,135,136,137,138,139,140,141,142,143],"architecture","improve","codebase","improve codebase architecture","html","visual","you","present","deepening","true","html report","pick","report","scan","one","grill","as",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":150,"publishedAt":38},"01M71FWCMB41PC4XCKG0HTMEFK","grilling","Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases.","https:\u002F\u002Fgithub.com\u002FAndy-CH-BO-AN\u002FAI-running-coach\u002Fblob\u002Fmain\u002Fai\u002Fskills\u002Fgrilling\u002FSKILL.md",[],[146,151,142,152,153,154,155,156,157,158,37,29,159,160],"about","plan","thinking","test","trigger","idea","user","stress","stress-test","decision",{"skillNo":162,"name":163,"nameZh":6,"description":164,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":165,"categories":166,"keywords":167,"publishedAt":38},"01M71FWBE9N70PWAY8HF7RR4HY","grill-with-docs","A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.","https:\u002F\u002Fgithub.com\u002FAndy-CH-BO-AN\u002FAI-running-coach\u002Fblob\u002Fmain\u002Fai\u002Fskills\u002Fgrill-with-docs\u002FSKILL.md",[],[168,142,169,170,171,172,173,174,175,136,152,176,143,177],"with","grill with docs","docs","which","sharpen","glossary","go","design","adr","interview",{"skillNo":179,"name":180,"nameZh":6,"description":181,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":182,"categories":183,"keywords":184,"publishedAt":38},"01M71FWAJCWSX1NFJZN2M93K39","grill-me","A relentless interview to sharpen a plan or design.","https:\u002F\u002Fgithub.com\u002FAndy-CH-BO-AN\u002FAI-running-coach\u002Fblob\u002Fmain\u002Fai\u002Fskills\u002Fgrill-me\u002FSKILL.md",[],[142,185,186,172,152,175,136,177],"grill me","me"]