[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71NJ13PZXB8P6HC5THT77SG":3,"skill-same:01M71NJ13PZXB8P6HC5THT77SG":113},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":15,"sourceHtmlUrl":16,"categories":17,"keywords":31,"publishedAt":52,"linkOnly":53,"markdownContent":54,"markdownBody":55,"frontMatter":56,"refName":63,"commitSha":64,"skillDirectory":65,"forksCount":66,"repositoryHtmlUrl":67,"repositoryHomepageUrl":68,"ownerHtmlUrl":69,"ownerBlogUrl":70,"ownerDescription":6,"updatedAt":71,"install":72,"resources":85},"01M71NJ13PZXB8P6HC5THT77SG","playwright-expert",null,"Use when writing or debugging Playwright end-to-end browser tests in TypeScript: page objects, fixtures, locators, API mocking, traces and CI. Persona with reference files and strict rules against waitForTimeout and CSS-class selectors. Overlaps e2e-testing, which is a shorter patterns catalogue.","monoes\u002Fmonomind","monoes","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F276744696?v=4","01M71KWF37AJ2NJBP3KWBVSDGT","01M71KWF4CSF8ADH0M6HA09VD2",23,"MIT","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fplaywright-expert\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fplaywright-expert\u002FSKILL.md",[18,23,26],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":27,"categoryName":28,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],"expert","playwright","playwright expert","typescript","browser","api","when","debugging","writing","persona","files","objects","frontend","ci","testing","end","e2e-testing","claude-skills","css","which","2026-11-10 10:56:23",false,"---\nname: playwright-expert\ndescription: \"Use when writing or debugging Playwright end-to-end browser tests in TypeScript: page objects, fixtures, locators, API mocking, traces and CI. Persona with reference files and strict rules against waitForTimeout and CSS-class selectors. Overlaps e2e-testing, which is a shorter patterns catalogue.\"\ntags: [\"testing\",\"frontend\",\"typescript\",\"debug\"]\ntools: []\nlicense: MIT\nsource: https:\u002F\u002Fgithub.com\u002FJeffallan\u002Fclaude-skills\nsource_path: \"skills\u002Fplaywright-expert\"\nsource_commit: 882ef55e377dbf9a4dbe496bb41ac6ccd0e555cf\n---\n# Playwright Expert\n\nE2E testing specialist with deep expertise in Playwright for robust, maintainable browser automation.\n\n## Core Workflow\n\n1. **Analyze requirements** - Identify user flows to test\n2. **Setup** - Configure Playwright with proper settings\n3. **Write tests** - Use POM pattern, proper selectors, auto-waiting\n4. **Debug** - Run test → check trace → identify issue → fix → verify fix\n5. **Integrate** - Add to CI\u002FCD pipeline\n\n## Reference Guide\n\nLoad detailed guidance based on context:\n\n| Topic | Reference | Load When |\n|-------|-----------|-----------|\n| Selectors | `references\u002Fselectors-locators.md` | Writing selectors, locator priority |\n| Page Objects | `references\u002Fpage-object-model.md` | POM patterns, fixtures |\n| API Mocking | `references\u002Fapi-mocking.md` | Route interception, mocking |\n| Configuration | `references\u002Fconfiguration.md` | playwright.config.ts setup |\n| Debugging | `references\u002Fdebugging-flaky.md` | Flaky tests, trace viewer |\n\n## Constraints\n\n### MUST DO\n- Use role-based selectors when possible\n- Leverage auto-waiting (don't add arbitrary timeouts)\n- Keep tests independent (no shared state)\n- Use Page Object Model for maintainability\n- Enable traces\u002Fscreenshots for debugging\n- Run tests in parallel\n\n### MUST NOT DO\n- Use `waitForTimeout()` (use proper waits)\n- Rely on CSS class selectors (brittle)\n- Share state between tests\n- Ignore flaky tests\n- Use `first()`, `nth()` without good reason\n\n## Code Examples\n\n### Selector: Role-based (correct) vs CSS class (brittle)\n\n```typescript\n\u002F\u002F ✅ Role-based selector — resilient to styling changes\nawait page.getByRole('button', { name: 'Submit' }).click();\nawait page.getByLabel('Email address').fill('user@example.com');\n\n\u002F\u002F ❌ CSS class selector — breaks on refactor\nawait page.locator('.btn-primary.submit-btn').click();\nawait page.locator('.email-input').fill('user@example.com');\n```\n\n### Page Object Model + Test File\n\n```typescript\n\u002F\u002F pages\u002FLoginPage.ts\nimport { type Page, type Locator } from '@playwright\u002Ftest';\n\nexport class LoginPage {\n  readonly page: Page;\n  readonly emailInput: Locator;\n  readonly passwordInput: Locator;\n  readonly submitButton: Locator;\n  readonly errorMessage: Locator;\n\n  constructor(page: Page) {\n    this.page = page;\n    this.emailInput = page.getByLabel('Email address');\n    this.passwordInput = page.getByLabel('Password');\n    this.submitButton = page.getByRole('button', { name: 'Sign in' });\n    this.errorMessage = page.getByRole('alert');\n  }\n\n  async goto() {\n    await this.page.goto('\u002Flogin');\n  }\n\n  async login(email: string, password: string) {\n    await this.emailInput.fill(email);\n    await this.passwordInput.fill(password);\n    await this.submitButton.click();\n  }\n}\n```\n\n```typescript\n\u002F\u002F tests\u002Flogin.spec.ts\nimport { test, expect } from '@playwright\u002Ftest';\nimport { LoginPage } from '..\u002Fpages\u002FLoginPage';\n\ntest.describe('Login', () => {\n  let loginPage: LoginPage;\n\n  test.beforeEach(async ({ page }) => {\n    loginPage = new LoginPage(page);\n    await loginPage.goto();\n  });\n\n  test('successful login redirects to dashboard', async ({ page }) => {\n    await loginPage.login('user@example.com', 'correct-password');\n    await expect(page).toHaveURL('\u002Fdashboard');\n  });\n\n  test('invalid credentials shows error', async () => {\n    await loginPage.login('user@example.com', 'wrong-password');\n    await expect(loginPage.errorMessage).toBeVisible();\n    await expect(loginPage.errorMessage).toContainText('Invalid credentials');\n  });\n});\n```\n\n### Debugging Workflow for Flaky Tests\n\n```typescript\n\u002F\u002F 1. Run failing test with trace enabled\n\u002F\u002F playwright.config.ts\nuse: {\n  trace: 'on-first-retry',\n  screenshot: 'only-on-failure',\n}\n\n\u002F\u002F 2. Re-run with retries to capture trace\n\u002F\u002F npx playwright test --retries=2\n\n\u002F\u002F 3. Open trace viewer to inspect timeline\n\u002F\u002F npx playwright show-trace test-results\u002F...\u002Ftrace.zip\n\n\u002F\u002F 4. Common fix — replace arbitrary timeout with proper wait\n\u002F\u002F ❌ Flaky\nawait page.waitForTimeout(2000);\nawait page.getByRole('button', { name: 'Save' }).click();\n\n\u002F\u002F ✅ Reliable — waits for element state\nawait page.getByRole('button', { name: 'Save' }).waitFor({ state: 'visible' });\nawait page.getByRole('button', { name: 'Save' }).click();\n\n\u002F\u002F 5. Verify fix — run test 10x to confirm stability\n\u002F\u002F npx playwright test --repeat-each=10\n```\n\n## Output Templates\n\nWhen implementing Playwright tests, provide:\n1. Page Object classes\n2. Test files with proper assertions\n3. Fixture setup if needed\n4. Configuration recommendations\n\n## Knowledge Reference\n\nPlaywright, Page Object Model, auto-waiting, locators, fixtures, API mocking, trace viewer, visual comparisons, parallel execution, CI\u002FCD integration\n\n[Documentation](https:\u002F\u002Fjeffallan.github.io\u002Fclaude-skills\u002Fskills\u002Fquality\u002Fplaywright-expert\u002F)\n","# Playwright Expert\n\nE2E testing specialist with deep expertise in Playwright for robust, maintainable browser automation.\n\n## Core Workflow\n\n1. **Analyze requirements** - Identify user flows to test\n2. **Setup** - Configure Playwright with proper settings\n3. **Write tests** - Use POM pattern, proper selectors, auto-waiting\n4. **Debug** - Run test → check trace → identify issue → fix → verify fix\n5. **Integrate** - Add to CI\u002FCD pipeline\n\n## Reference Guide\n\nLoad detailed guidance based on context:\n\n| Topic | Reference | Load When |\n|-------|-----------|-----------|\n| Selectors | `references\u002Fselectors-locators.md` | Writing selectors, locator priority |\n| Page Objects | `references\u002Fpage-object-model.md` | POM patterns, fixtures |\n| API Mocking | `references\u002Fapi-mocking.md` | Route interception, mocking |\n| Configuration | `references\u002Fconfiguration.md` | playwright.config.ts setup |\n| Debugging | `references\u002Fdebugging-flaky.md` | Flaky tests, trace viewer |\n\n## Constraints\n\n### MUST DO\n- Use role-based selectors when possible\n- Leverage auto-waiting (don't add arbitrary timeouts)\n- Keep tests independent (no shared state)\n- Use Page Object Model for maintainability\n- Enable traces\u002Fscreenshots for debugging\n- Run tests in parallel\n\n### MUST NOT DO\n- Use `waitForTimeout()` (use proper waits)\n- Rely on CSS class selectors (brittle)\n- Share state between tests\n- Ignore flaky tests\n- Use `first()`, `nth()` without good reason\n\n## Code Examples\n\n### Selector: Role-based (correct) vs CSS class (brittle)\n\n```typescript\n\u002F\u002F ✅ Role-based selector — resilient to styling changes\nawait page.getByRole('button', { name: 'Submit' }).click();\nawait page.getByLabel('Email address').fill('user@example.com');\n\n\u002F\u002F ❌ CSS class selector — breaks on refactor\nawait page.locator('.btn-primary.submit-btn').click();\nawait page.locator('.email-input').fill('user@example.com');\n```\n\n### Page Object Model + Test File\n\n```typescript\n\u002F\u002F pages\u002FLoginPage.ts\nimport { type Page, type Locator } from '@playwright\u002Ftest';\n\nexport class LoginPage {\n  readonly page: Page;\n  readonly emailInput: Locator;\n  readonly passwordInput: Locator;\n  readonly submitButton: Locator;\n  readonly errorMessage: Locator;\n\n  constructor(page: Page) {\n    this.page = page;\n    this.emailInput = page.getByLabel('Email address');\n    this.passwordInput = page.getByLabel('Password');\n    this.submitButton = page.getByRole('button', { name: 'Sign in' });\n    this.errorMessage = page.getByRole('alert');\n  }\n\n  async goto() {\n    await this.page.goto('\u002Flogin');\n  }\n\n  async login(email: string, password: string) {\n    await this.emailInput.fill(email);\n    await this.passwordInput.fill(password);\n    await this.submitButton.click();\n  }\n}\n```\n\n```typescript\n\u002F\u002F tests\u002Flogin.spec.ts\nimport { test, expect } from '@playwright\u002Ftest';\nimport { LoginPage } from '..\u002Fpages\u002FLoginPage';\n\ntest.describe('Login', () => {\n  let loginPage: LoginPage;\n\n  test.beforeEach(async ({ page }) => {\n    loginPage = new LoginPage(page);\n    await loginPage.goto();\n  });\n\n  test('successful login redirects to dashboard', async ({ page }) => {\n    await loginPage.login('user@example.com', 'correct-password');\n    await expect(page).toHaveURL('\u002Fdashboard');\n  });\n\n  test('invalid credentials shows error', async () => {\n    await loginPage.login('user@example.com', 'wrong-password');\n    await expect(loginPage.errorMessage).toBeVisible();\n    await expect(loginPage.errorMessage).toContainText('Invalid credentials');\n  });\n});\n```\n\n### Debugging Workflow for Flaky Tests\n\n```typescript\n\u002F\u002F 1. Run failing test with trace enabled\n\u002F\u002F playwright.config.ts\nuse: {\n  trace: 'on-first-retry',\n  screenshot: 'only-on-failure',\n}\n\n\u002F\u002F 2. Re-run with retries to capture trace\n\u002F\u002F npx playwright test --retries=2\n\n\u002F\u002F 3. Open trace viewer to inspect timeline\n\u002F\u002F npx playwright show-trace test-results\u002F...\u002Ftrace.zip\n\n\u002F\u002F 4. Common fix — replace arbitrary timeout with proper wait\n\u002F\u002F ❌ Flaky\nawait page.waitForTimeout(2000);\nawait page.getByRole('button', { name: 'Save' }).click();\n\n\u002F\u002F ✅ Reliable — waits for element state\nawait page.getByRole('button', { name: 'Save' }).waitFor({ state: 'visible' });\nawait page.getByRole('button', { name: 'Save' }).click();\n\n\u002F\u002F 5. Verify fix — run test 10x to confirm stability\n\u002F\u002F npx playwright test --repeat-each=10\n```\n\n## Output Templates\n\nWhen implementing Playwright tests, provide:\n1. Page Object classes\n2. Test files with proper assertions\n3. Fixture setup if needed\n4. Configuration recommendations\n\n## Knowledge Reference\n\nPlaywright, Page Object Model, auto-waiting, locators, fixtures, API mocking, trace viewer, visual comparisons, parallel execution, CI\u002FCD integration\n\n[Documentation](https:\u002F\u002Fjeffallan.github.io\u002Fclaude-skills\u002Fskills\u002Fquality\u002Fplaywright-expert\u002F)\n",{"name":5,"tags":57,"tools":59,"source":60,"license":14,"description":7,"source_path":61,"source_commit":62},[46,44,35,58],"debug",[],"https:\u002F\u002Fgithub.com\u002FJeffallan\u002Fclaude-skills","skills\u002Fplaywright-expert","882ef55e377dbf9a4dbe496bb41ac6ccd0e555cf","main","f7cd4595d0f8959822163e14f9787117765c931a","packages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fplaywright-expert",2,"https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind","https:\u002F\u002Fmonoes.github.io\u002Fmonomind\u002F","https:\u002F\u002Fgithub.com\u002Fmonoes","https:\u002F\u002Fmonoes.me","2026-11-10 01:53:48",{"source":8,"skillName":5,"commands":73,"prompt":83,"zipAvailable":84},[74,77,80],{"tool":75,"command":76},"npx","npx skills add monoes\u002Fmonomind --skill playwright-expert",{"tool":78,"command":79},"bunx","bunx skills add monoes\u002Fmonomind --skill playwright-expert",{"tool":81,"command":82},"pnpm","pnpm dlx skills add monoes\u002Fmonomind --skill playwright-expert","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fplaywright-expert\u002FSKILL.md",true,[86,91,97,101,105,109],{"path":87,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":90,"sourceHtmlUrl":15},"LICENSE.txt","LICENSE","许可证",1056,{"path":92,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":95,"sourceHtmlUrl":96},"references\u002Fapi-mocking.md","REFERENCE","参考文档",3145,"https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fplaywright-expert\u002Freferences\u002Fapi-mocking.md",{"path":98,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":99,"sourceHtmlUrl":100},"references\u002Fconfiguration.md",3286,"https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fplaywright-expert\u002Freferences\u002Fconfiguration.md",{"path":102,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":103,"sourceHtmlUrl":104},"references\u002Fdebugging-flaky.md",3207,"https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fplaywright-expert\u002Freferences\u002Fdebugging-flaky.md",{"path":106,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":107,"sourceHtmlUrl":108},"references\u002Fpage-object-model.md",3684,"https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fplaywright-expert\u002Freferences\u002Fpage-object-model.md",{"path":110,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":111,"sourceHtmlUrl":112},"references\u002Fselectors-locators.md",2798,"https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fplaywright-expert\u002Freferences\u002Fselectors-locators.md",[114,143,173,200,225,251],{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":118,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":121,"publishedAt":142},"01M71PB3SHWKMNJM6MD65VX8D6","zk-steward","Org role guidance for a ZK steward: engineer zero-knowledge proof systems with circuit design, SNARK vs STARK choice and security review. This is zero-knowledge cryptography, not Zettelkasten note-taking.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fzk-steward\u002FSKILL.md",[],[122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141],"zk","zk steward","steward","zero-knowledge","engineer","choice","design","knowledge","impact","query","snark","review","monomind","security review","stark","zettelkasten","cryptography","security","org","blockchain","2026-11-10 13:02:02",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":147,"sourceHtmlUrl":148,"categories":149,"keywords":156,"publishedAt":142},"01M71PB18SDG28WBKPKJNB814K","writing-plans","Use when you have a spec or requirements for a multi-step coding task and must write an implementation plan before touching code. Produces bite-sized TDD tasks with exact file paths, code and commands for an engineer with zero context.","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fwriting-plans\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fwriting-plans\u002FSKILL.md",[150,153],{"categoryNo":151,"categoryName":152,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":154,"categoryName":155,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000036","内容创作者",[40,157,158,126,159,160,38,161,131,162,163,164,165,166,167,168,169,170,171,172],"writing plans","plans","superpowers","implementation plan","you","code","tasks","plan","product","write","commands","paths","suggest","coding","context","ZeRO",{"skillNo":174,"name":175,"nameZh":6,"description":176,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":118,"licenseFileUrl":177,"sourceHtmlUrl":178,"categories":179,"keywords":183,"publishedAt":142},"01M71PAXFM488X9ARXK0T04TF5","write-spec","Write a feature spec or PRD from a problem statement or feature idea. Use when turning a vague idea or user request into a structured document, scoping a feature with goals and non-goals, defining success metrics and acceptance criteria, or breaking a big ask into a phased spec.","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fwrite-spec\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fwrite-spec\u002FSKILL.md",[180],{"categoryNo":181,"categoryName":182,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000031","产品经理",[166,184,185,186,187,129,188,38,189,190,191,165,192,193,194,195,196,197,198,199],"write spec","spec","user request","problem","acceptance","ask","vague","work","request","scoping","idea","metrics","feature","problem statement","use","document",{"skillNo":201,"name":202,"nameZh":6,"description":203,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":118,"licenseFileUrl":204,"sourceHtmlUrl":205,"categories":206,"keywords":210,"publishedAt":142},"01M71PASSZY800C0RPEARBS918","write-query","Write optimized SQL for your dialect with best practices. Use when translating a natural-language data need into SQL, building a multi-CTE query with joins and aggregations, optimizing a query against a large partitioned table, or getting dialect-specific syntax for Snowflake, BigQuery, Postgres, etc.","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fwrite-query\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fwrite-query\u002FSKILL.md",[207],{"categoryNo":208,"categoryName":209,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000033","数据分析师",[131,166,211,212,213,214,129,198,38,215,216,217,218,191,219,220,221,222,223,224],"write query","postgres","for","snowflake","best practices","natural-language","with","multi","github","sql","https","syntax","plugins","data",{"skillNo":226,"name":227,"nameZh":6,"description":228,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":118,"licenseFileUrl":6,"sourceHtmlUrl":229,"categories":230,"keywords":237,"publishedAt":142},"01M71PAPTX0T3PF6ETFVR96SJJ","workflow-automation","Org role guidance for workflow automation: build and maintain CI\u002FCD definitions in GitHub Actions or equivalent: triggers, jobs, matrices, caching. Covers path filters, dependency caching, parallel jobs, timeouts and fail-fast ordering.","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fworkflow-automation\u002FSKILL.md",[231,234],{"categoryNo":232,"categoryName":233,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":235,"categoryName":236,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[238,239,240,241,213,242,45,243,244,130,245,246,247,131,134,219,248,249,250,221],"Workflow Automation","automation","workflow","parallel","actions","triggers","github actions","maintain","filters","caching","build","dependency","devops",{"skillNo":252,"name":253,"nameZh":6,"description":254,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":118,"licenseFileUrl":6,"sourceHtmlUrl":255,"categories":256,"keywords":258,"publishedAt":142},"01M71PAM19Z1XTV9NPCFSE2MY8","workflow-architect","Org role guidance for a workflow architect: map full workflow trees for systems, user journeys and agents, covering every branch and failure. Covers discovering workflows from code, handoff contracts, timeouts, recovery paths and observable state.","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fworkflow-architect\u002FSKILL.md",[257],{"categoryNo":235,"categoryName":236,"taxonomyType":21,"taxonomyTypeDesc":22},[240,259,260,261,262,263,264,213,265,266,162,267,268,269,134,219,270,271,221,272],"workflow architect","architect","trees","user journeys","branch","planning","map","workflows","architecture","state","leadership","recovery","operations","systems"]