[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6G1MVEM4CDZP18MN2Q5K3FF":3,"skill-same:01M6G1MVEM4CDZP18MN2Q5K3FF":48},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":21,"linkOnly":22,"markdownContent":23,"markdownBody":23,"frontMatter":24,"refName":25,"commitSha":26,"skillDirectory":27,"forksCount":28,"repositoryHtmlUrl":29,"repositoryHomepageUrl":6,"ownerHtmlUrl":30,"ownerBlogUrl":31,"ownerDescription":32,"updatedAt":33,"install":34,"resources":47},"01M6G1MVEM4CDZP18MN2Q5K3FF","monorepo-navigator",null,"oabdelmaksoud\u002FAgention","oabdelmaksoud","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F50699149?v=4","01M6D5CVVN778ZCDP1WHS816SP","Omar Abdelmaksoud","01M6D8A4TE76V3DCSH3D94VG1V",2,"MIT","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fclaude-skills\u002Fengineering\u002Fmonorepo-navigator\u002FSKILL.md",[],[18,19,20],"navigator","monorepo","monorepo navigator","2026-11-10 10:12:30",false,"# Monorepo Navigator\n\n**Tier:** POWERFUL  \n**Category:** Engineering  \n**Domain:** Monorepo Architecture \u002F Build Systems  \n\n---\n\n## Overview\n\nNavigate, manage, and optimize monorepos. Covers Turborepo, Nx, pnpm workspaces, and Lerna. Enables cross-package impact analysis, selective builds\u002Ftests on affected packages only, remote caching, dependency graph visualization, and structured migrations from multi-repo to monorepo. Includes Claude Code configuration for workspace-aware development.\n\n---\n\n## Core Capabilities\n\n- **Cross-package impact analysis** — determine which apps break when a shared package changes\n- **Selective commands** — run tests\u002Fbuilds only for affected packages (not everything)\n- **Dependency graph** — visualize package relationships as Mermaid diagrams\n- **Build optimization** — remote caching, incremental builds, parallel execution\n- **Migration** — step-by-step multi-repo → monorepo with zero history loss\n- **Publishing** — changesets for versioning, pre-release channels, npm publish workflows\n- **Claude Code config** — workspace-aware CLAUDE.md with per-package instructions\n\n---\n\n## When to Use\n\nUse when:\n- Multiple packages\u002Fapps share code (UI components, utils, types, API clients)\n- Build times are slow because everything rebuilds when anything changes\n- Migrating from multiple repos to a single repo\n- Need to publish packages to npm with coordinated versioning\n- Teams work across multiple packages and need unified tooling\n\nSkip when:\n- Single-app project with no shared packages\n- Team\u002Fproject boundaries are completely isolated (polyrepo is fine)\n- Shared code is minimal and copy-paste overhead is acceptable\n\n---\n\n## Tool Selection\n\n| Tool | Best For | Key Feature |\n|---|---|---|\n| **Turborepo** | JS\u002FTS monorepos, simple pipeline config | Best-in-class remote caching, minimal config |\n| **Nx** | Large enterprises, plugin ecosystem | Project graph, code generation, affected commands |\n| **pnpm workspaces** | Workspace protocol, disk efficiency | `workspace:*` for local package refs |\n| **Lerna** | npm publishing, versioning | Batch publishing, conventional commits |\n| **Changesets** | Modern versioning (preferred over Lerna) | Changelog generation, pre-release channels |\n\nMost modern setups: **pnpm workspaces + Turborepo + Changesets**\n\n---\n\n## Turborepo\n\n### turbo.json pipeline config\n\n```json\n{\n  \"$schema\": \"https:\u002F\u002Fturbo.build\u002Fschema.json\",\n  \"globalEnv\": [\"NODE_ENV\", \"DATABASE_URL\"],\n  \"pipeline\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"],    \u002F\u002F build deps first (topological order)\n      \"outputs\": [\".next\u002F**\", \"dist\u002F**\", \"build\u002F**\"],\n      \"env\": [\"NEXT_PUBLIC_API_URL\"]\n    },\n    \"test\": {\n      \"dependsOn\": [\"^build\"],    \u002F\u002F need built deps to test\n      \"outputs\": [\"coverage\u002F**\"],\n      \"cache\": true\n    },\n    \"lint\": {\n      \"outputs\": [],\n      \"cache\": true\n    },\n    \"dev\": {\n      \"cache\": false,             \u002F\u002F never cache dev servers\n      \"persistent\": true          \u002F\u002F long-running process\n    },\n    \"type-check\": {\n      \"dependsOn\": [\"^build\"],\n      \"outputs\": []\n    }\n  }\n}\n```\n\n### Key commands\n\n```bash\n# Build everything (respects dependency order)\nturbo run build\n\n# Build only affected packages (requires --filter)\nturbo run build --filter=...[HEAD^1]   # changed since last commit\nturbo run build --filter=...[main]     # changed vs main branch\n\n# Test only affected\nturbo run test --filter=...[HEAD^1]\n\n# Run for a specific app and all its dependencies\nturbo run build --filter=@myorg\u002Fweb...\n\n# Run for a specific package only (no dependencies)\nturbo run build --filter=@myorg\u002Fui\n\n# Dry-run — see what would run without executing\nturbo run build --dry-run\n\n# Enable remote caching (Vercel Remote Cache)\nturbo login\nturbo link\n```\n\n### Remote caching setup\n\n```bash\n# .turbo\u002Fconfig.json (auto-created by turbo link)\n{\n  \"teamid\": \"team_xxxx\",\n  \"apiurl\": \"https:\u002F\u002Fvercel.com\"\n}\n\n# Self-hosted cache server (open-source alternative)\n# Run ducktape\u002Fturborepo-remote-cache or Turborepo's official server\nTURBO_API=http:\u002F\u002Fyour-cache-server.internal \\\nTURBO_TOKEN=your-token \\\nTURBO_TEAM=your-team \\\nturbo run build\n```\n\n---\n\n## Nx\n\n### Project graph and affected commands\n\n```bash\n# Install\nnpx create-nx-workspace@latest my-monorepo\n\n# Visualize the project graph (opens browser)\nnx graph\n\n# Show affected packages for the current branch\nnx affected:graph\n\n# Run only affected tests\nnx affected --target=test\n\n# Run only affected builds\nnx affected --target=build\n\n# Run affected with base\u002Fhead (for CI)\nnx affected --target=test --base=main --head=HEAD\n```\n\n### nx.json configuration\n\n```json\n{\n  \"$schema\": \".\u002Fnode_modules\u002Fnx\u002Fschemas\u002Fnx-schema.json\",\n  \"targetDefaults\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"],\n      \"cache\": true\n    },\n    \"test\": {\n      \"cache\": true,\n      \"inputs\": [\"default\", \"^production\"]\n    }\n  },\n  \"namedInputs\": {\n    \"default\":    [\"{projectRoot}\u002F**\u002F*\", \"sharedGlobals\"],\n    \"production\": [\"default\", \"!{projectRoot}\u002F**\u002F*.spec.ts\", \"!{projectRoot}\u002Fjest.config.*\"],\n    \"sharedGlobals\": []\n  },\n  \"parallel\": 4,\n  \"cacheDirectory\": \"\u002Ftmp\u002Fnx-cache\"\n}\n```\n\n---\n\n## pnpm Workspaces\n\n### pnpm-workspace.yaml\n\n```yaml\npackages:\n  - 'apps\u002F*'\n  - 'packages\u002F*'\n  - 'tools\u002F*'\n```\n\n### workspace:* protocol for local packages\n\n```json\n\u002F\u002F apps\u002Fweb\u002Fpackage.json\n{\n  \"name\": \"@myorg\u002Fweb\",\n  \"dependencies\": {\n    \"@myorg\u002Fui\":     \"workspace:*\",   \u002F\u002F always use local version\n    \"@myorg\u002Futils\":  \"workspace:^\",   \u002F\u002F local, but respect semver on publish\n    \"@myorg\u002Ftypes\":  \"workspace:~\"\n  }\n}\n```\n\n### Useful pnpm workspace commands\n\n```bash\n# Install all packages across workspace\npnpm install\n\n# Run script in a specific package\npnpm --filter @myorg\u002Fweb dev\n\n# Run script in all packages\npnpm --filter \"*\" build\n\n# Run script in a package and all its dependencies\npnpm --filter @myorg\u002Fweb... build\n\n# Add a dependency to a specific package\npnpm --filter @myorg\u002Fweb add react\n\n# Add a shared dev dependency to root\npnpm add -D typescript -w\n\n# List workspace packages\npnpm ls --depth -1 -r\n```\n\n---\n\n## Cross-Package Impact Analysis\n\nWhen a shared package changes, determine what's affected before you ship.\n\n```bash\n# Using Turborepo — show affected packages\nturbo run build --filter=...[HEAD^1] --dry-run 2>&1 | grep \"Tasks to run\"\n\n# Using Nx\nnx affected:apps --base=main --head=HEAD    # which apps are affected\nnx affected:libs --base=main --head=HEAD    # which libs are affected\n\n# Manual analysis with pnpm\n# Find all packages that depend on @myorg\u002Futils:\ngrep -r '\"@myorg\u002Futils\"' packages\u002F*\u002Fpackage.json apps\u002F*\u002Fpackage.json\n\n# Using jq for structured output\nfor pkg in packages\u002F*\u002Fpackage.json apps\u002F*\u002Fpackage.json; do\n  name=$(jq -r '.name' \"$pkg\")\n  if jq -e '.dependencies[\"@myorg\u002Futils\"] \u002F\u002F .devDependencies[\"@myorg\u002Futils\"]' \"$pkg\" > \u002Fdev\u002Fnull 2>&1; then\n    echo \"$name depends on @myorg\u002Futils\"\n  fi\ndone\n```\n\n---\n\n## Dependency Graph Visualization\n\nGenerate a Mermaid diagram from your workspace:\n\n```bash\n# Generate dependency graph as Mermaid\ncat > scripts\u002Fgen-dep-graph.js \u003C\u003C 'EOF'\nconst { execSync } = require('child_process');\nconst fs = require('fs');\n\n\u002F\u002F Parse pnpm workspace packages\nconst packages = JSON.parse(\n  execSync('pnpm ls --depth -1 -r --json').toString()\n);\n\nlet mermaid = 'graph TD\\n';\npackages.forEach(pkg => {\n  const deps = Object.keys(pkg.dependencies || {})\n    .filter(d => d.startsWith('@myorg\u002F'));\n  deps.forEach(dep => {\n    const from = pkg.name.replace('@myorg\u002F', '');\n    const to = dep.replace('@myorg\u002F', '');\n    mermaid += `  ${from} --> ${to}\\n`;\n  });\n});\n\nfs.writeFileSync('docs\u002Fdep-graph.md', '```mermaid\\n' + mermaid + '```\\n');\nconsole.log('Written to docs\u002Fdep-graph.md');\nEOF\nnode scripts\u002Fgen-dep-graph.js\n```\n\n**Example output:**\n\n```mermaid\ngraph TD\n  web --> ui\n  web --> utils\n  web --> types\n  mobile --> ui\n  mobile --> utils\n  mobile --> types\n  admin --> ui\n  admin --> utils\n  api --> types\n  ui --> utils\n```\n\n---\n\n## Claude Code Configuration (Workspace-Aware CLAUDE.md)\n\nPlace a root CLAUDE.md + per-package CLAUDE.md files:\n\n```markdown\n# \u002FCLAUDE.md — Root (applies to all packages)\n\n## Monorepo Structure\n- apps\u002Fweb       — Next.js customer-facing app\n- apps\u002Fadmin     — Next.js internal admin\n- apps\u002Fapi       — Express REST API\n- packages\u002Fui    — Shared React component library\n- packages\u002Futils — Shared utilities (pure functions only)\n- packages\u002Ftypes — Shared TypeScript types (no runtime code)\n\n## Build System\n- pnpm workspaces + Turborepo\n- Always use `pnpm --filter \u003Cpackage>` to scope commands\n- Never run `npm install` or `yarn` — pnpm only\n- Run `turbo run build --filter=...[HEAD^1]` before committing\n\n## Task Scoping Rules\n- When modifying packages\u002Fui: also run tests for apps\u002Fweb and apps\u002Fadmin (they depend on it)\n- When modifying packages\u002Ftypes: run type-check across ALL packages\n- When modifying apps\u002Fapi: only need to test apps\u002Fapi\n\n## Package Manager\npnpm — version pinned in packageManager field of root package.json\n```\n\n```markdown\n# \u002Fpackages\u002Fui\u002FCLAUDE.md — Package-specific\n\n## This Package\nShared React component library. Zero business logic. Pure UI only.\n\n## Rules\n- All components must be exported from src\u002Findex.ts\n- No direct API calls in components — accept data via props\n- Every component needs a Storybook story in src\u002Fstories\u002F\n- Use Tailwind for styling — no CSS modules or styled-components\n\n## Testing\n- Component tests: `pnpm --filter @myorg\u002Fui test`\n- Visual regression: `pnpm --filter @myorg\u002Fui test:storybook`\n\n## Publishing\n- Version bumps via changesets only — never edit package.json version manually\n- Run `pnpm changeset` from repo root after changes\n```\n\n---\n\n## Migration: Multi-Repo → Monorepo\n\n```bash\n# Step 1: Create monorepo scaffold\nmkdir my-monorepo && cd my-monorepo\npnpm init\necho \"packages:\\n  - 'apps\u002F*'\\n  - 'packages\u002F*'\" > pnpm-workspace.yaml\n\n# Step 2: Move repos with git history preserved\nmkdir -p apps packages\n\n# For each existing repo:\ngit clone https:\u002F\u002Fgithub.com\u002Fmyorg\u002Fweb-app\ncd web-app\ngit filter-repo --to-subdirectory-filter apps\u002Fweb  # rewrites history into subdir\ncd ..\ngit remote add web-app .\u002Fweb-app\ngit fetch web-app --tags\ngit merge web-app\u002Fmain --allow-unrelated-histories\n\n# Step 3: Update package names to scoped\n# In each package.json, change \"name\": \"web\" to \"name\": \"@myorg\u002Fweb\"\n\n# Step 4: Replace cross-repo npm deps with workspace:*\n# apps\u002Fweb\u002Fpackage.json: \"@myorg\u002Fui\": \"1.2.3\" → \"@myorg\u002Fui\": \"workspace:*\"\n\n# Step 5: Add shared configs to root\ncp apps\u002Fweb\u002F.eslintrc.js .eslintrc.base.js\n# Update each package's config to extend root:\n# { \"extends\": [\"..\u002F..\u002F.eslintrc.base.js\"] }\n\n# Step 6: Add Turborepo\npnpm add -D turbo -w\n# Create turbo.json (see above)\n\n# Step 7: Unified CI (see CI section below)\n# Step 8: Test everything\nturbo run build test lint\n```\n\n---\n\n## CI Patterns\n\n### GitHub Actions — Affected Only\n\n```yaml\n# .github\u002Fworkflows\u002Fci.yml\nname: CI\n\non:\n  push:\n    branches: [main]\n  pull_request:\n\njobs:\n  affected:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n        with:\n          fetch-depth: 0          # full history needed for affected detection\n\n      - uses: pnpm\u002Faction-setup@v3\n        with:\n          version: 9\n\n      - uses: actions\u002Fsetup-node@v4\n        with:\n          node-version: 20\n          cache: pnpm\n\n      - run: pnpm install --frozen-lockfile\n\n      # Turborepo remote cache\n      - uses: actions\u002Fcache@v4\n        with:\n          path: .turbo\n          key: ${{ runner.os }}-turbo-${{ github.sha }}\n          restore-keys: ${{ runner.os }}-turbo-\n\n      # Only test\u002Fbuild affected packages\n      - name: Build affected\n        run: turbo run build --filter=...[origin\u002Fmain]\n        env:\n          TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}\n          TURBO_TEAM: ${{ vars.TURBO_TEAM }}\n\n      - name: Test affected\n        run: turbo run test --filter=...[origin\u002Fmain]\n\n      - name: Lint affected\n        run: turbo run lint --filter=...[origin\u002Fmain]\n```\n\n### GitLab CI — Parallel Stages\n\n```yaml\n# .gitlab-ci.yml\nstages: [install, build, test, publish]\n\nvariables:\n  PNPM_CACHE_FOLDER: .pnpm-store\n\ncache:\n  key: pnpm-$CI_COMMIT_REF_SLUG\n  paths: [.pnpm-store\u002F, .turbo\u002F]\n\ninstall:\n  stage: install\n  script:\n    - pnpm install --frozen-lockfile\n  artifacts:\n    paths: [node_modules\u002F, packages\u002F*\u002Fnode_modules\u002F, apps\u002F*\u002Fnode_modules\u002F]\n    expire_in: 1h\n\nbuild:affected:\n  stage: build\n  needs: [install]\n  script:\n    - turbo run build --filter=...[origin\u002Fmain]\n  artifacts:\n    paths: [apps\u002F*\u002Fdist\u002F, apps\u002F*\u002F.next\u002F, packages\u002F*\u002Fdist\u002F]\n\ntest:affected:\n  stage: test\n  needs: [build:affected]\n  script:\n    - turbo run test --filter=...[origin\u002Fmain]\n  coverage: '\u002FStatements\\s*:\\s*(\\d+\\.?\\d*)%\u002F'\n  artifacts:\n    reports:\n      coverage_report:\n        coverage_format: cobertura\n        path: \"**\u002Fcoverage\u002Fcobertura-coverage.xml\"\n```\n\n---\n\n## Publishing with Changesets\n\n```bash\n# Install changesets\npnpm add -D @changesets\u002Fcli -w\npnpm changeset init\n\n# After making changes, create a changeset\npnpm changeset\n# Interactive: select packages, choose semver bump, write changelog entry\n\n# In CI — version packages + update changelogs\npnpm changeset version\n\n# Publish all changed packages\npnpm changeset publish\n\n# Pre-release channel (for alpha\u002Fbeta)\npnpm changeset pre enter beta\npnpm changeset\npnpm changeset version   # produces 1.2.0-beta.0\npnpm changeset publish --tag beta\npnpm changeset pre exit  # back to stable releases\n```\n\n### Automated publish workflow (GitHub Actions)\n\n```yaml\n# .github\u002Fworkflows\u002Frelease.yml\nname: Release\n\non:\n  push:\n    branches: [main]\n\njobs:\n  release:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - uses: pnpm\u002Faction-setup@v3\n      - uses: actions\u002Fsetup-node@v4\n        with:\n          node-version: 20\n          registry-url: https:\u002F\u002Fregistry.npmjs.org\n\n      - run: pnpm install --frozen-lockfile\n\n      - name: Create Release PR or Publish\n        uses: changesets\u002Faction@v1\n        with:\n          publish: pnpm changeset publish\n          version: pnpm changeset version\n          commit: \"chore: release packages\"\n          title: \"chore: release packages\"\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}\n```\n\n---\n\n## Common Pitfalls\n\n| Pitfall | Fix |\n|---|---|\n| Running `turbo run build` without `--filter` on every PR | Always use `--filter=...[origin\u002Fmain]` in CI |\n| `workspace:*` refs cause publish failures | Use `pnpm changeset publish` — it replaces `workspace:*` with real versions automatically |\n| All packages rebuild when unrelated file changes | Tune `inputs` in turbo.json to exclude docs, config files from cache keys |\n| Shared tsconfig causes one package to break all type-checks | Use `extends` properly — each package extends root but overrides `rootDir` \u002F `outDir` |\n| git history lost during migration | Use `git filter-repo --to-subdirectory-filter` before merging — never move files manually |\n| Remote cache not working in CI | Check TURBO_TOKEN and TURBO_TEAM env vars; verify with `turbo run build --summarize` |\n| CLAUDE.md too generic — Claude modifies wrong package | Add explicit \"When working on X, only touch files in apps\u002FX\" rules per package CLAUDE.md |\n\n---\n\n## Best Practices\n\n1. **Root CLAUDE.md defines the map** — document every package, its purpose, and dependency rules\n2. **Per-package CLAUDE.md defines the rules** — what's allowed, what's forbidden, testing commands\n3. **Always scope commands with --filter** — running everything on every change defeats the purpose\n4. **Remote cache is not optional** — without it, monorepo CI is slower than multi-repo CI\n5. **Changesets over manual versioning** — never hand-edit package.json versions in a monorepo\n6. **Shared configs in root, extended in packages** — tsconfig.base.json, .eslintrc.base.js, jest.base.config.js\n7. **Impact analysis before merging shared package changes** — run affected check, communicate blast radius\n8. **Keep packages\u002Ftypes as pure TypeScript** — no runtime code, no dependencies, fast to build and type-check\n",{},"main","a318f48de3c5718e8ea2e9f6fae7790e8a759e85","upstream-sync\u002Fwork\u002Fclaude-skills\u002Fengineering\u002Fmonorepo-navigator",0,"https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fo-abdelmaksoud\u002F","Full-Stack Engineer | AI Systems Architect | Building autonomous multi-agent systems","2026-03-08 21:23:03",{"source":7,"skillName":5,"commands":35,"prompt":45,"zipAvailable":46},[36,39,42],{"tool":37,"command":38},"npx","npx skills add oabdelmaksoud\u002FAgention --skill monorepo-navigator",{"tool":40,"command":41},"bunx","bunx skills add oabdelmaksoud\u002FAgention --skill monorepo-navigator",{"tool":43,"command":44},"pnpm","pnpm dlx skills add oabdelmaksoud\u002FAgention --skill monorepo-navigator","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fclaude-skills\u002Fengineering\u002Fmonorepo-navigator\u002FSKILL.md",true,[],[49,73,87,120,146,166],{"skillNo":50,"name":51,"nameZh":6,"description":52,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":53,"categories":54,"keywords":60,"publishedAt":21},"01M6G2QFCBNBYAJF2KTK85G9A6","visa-doc-translate","Translate visa application documents (images) to English and create a bilingual PDF with original and translation","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Fvisa-doc-translate\u002FSKILL.md",[55],{"categoryNo":56,"categoryName":57,"taxonomyType":58,"taxonomyTypeDesc":59},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",[61,62,63,64,65,66,67,68,69,70,71,72],"translate","doc","visa doc translate","bilingual","with","english","application","PDF","translation","documents","create","images",{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":21},"01M6G2QB09TSK6BY4ME5X20EVQ","verification-loop","A comprehensive verification system for Claude Code sessions.","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Fverification-loop\u002FSKILL.md",[],[80,81,82,83,84,85,86],"verification","loop","verification loop","sessions","code","claude code sessions","system",{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":104,"publishedAt":21},"01M6G2Q6V2F7G03VAAF27FXPJR","tdd-workflow","Use this skill when writing new features, fixing bugs, or refactoring code. Enforces test-driven development with 80%+ coverage including unit, integration, and E2E tests.","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Ftdd-workflow\u002FSKILL.md",[93,96,99],{"categoryNo":94,"categoryName":95,"taxonomyType":58,"taxonomyTypeDesc":59},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":97,"categoryName":98,"taxonomyType":58,"taxonomyTypeDesc":59},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":100,"categoryName":101,"taxonomyType":102,"taxonomyTypeDesc":103},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[105,106,107,108,109,110,111,112,113,84,114,115,116,117,65,118,119],"workflow","tdd","tdd workflow","use","unit","coverage","refactoring","e2e","integration","development","e2e tests","tests","driven","test","writing",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":126,"publishedAt":21},"01M6G2Q359YJRWAR2PFCEQAXF3","swiftui-patterns","SwiftUI architecture patterns, state management with @Observable, view composition, navigation, performance optimization, and modern iOS\u002FmacOS UI best practices.","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Fswiftui-patterns\u002FSKILL.md",[],[127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,65],"patterns","swiftui","swiftui patterns","architecture","macos","performance","state management","best practices","state","ui","Optimization","ios","architecture patterns","Composition","performance optimization","view","management","swiftui architecture","navigation",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":153,"publishedAt":21},"01M6G2PY8B2FWZTWPZ84H83Y7C","swift-protocol-di-testing","Protocol-based dependency injection for testable Swift code — mock file system, network, and external APIs using focused protocols and Swift Testing.","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Fswift-protocol-di-testing\u002FSKILL.md",[152],{"categoryNo":94,"categoryName":95,"taxonomyType":58,"taxonomyTypeDesc":59},[154,155,156,157,84,158,159,160,161,86,162,163,164,165],"swift protocol di testing","protocol","swift","testing","protocols","file","network","injection","dependency","swift testing","dependency injection","mock",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":172,"publishedAt":21},"01M6G2PSCN2GXV9FFZDRRRWVB6","swift-concurrency-6-2","Swift 6.2 Approachable Concurrency — single-threaded by default, @concurrent for explicit background offloading, isolated conformances for main actor types.","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Fswift-concurrency-6-2\u002FSKILL.md",[],[173,174,175,156,176,25,177],"concurrency","swift concurrency","swift concurrency 6 2","default","types"]