[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71MZV0G7Y9NRXGQQZRFGFAS":3,"skill-same:01M71MZV0G7Y9NRXGQQZRFGFAS":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":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":59,"commitSha":60,"skillDirectory":61,"forksCount":62,"repositoryHtmlUrl":63,"repositoryHomepageUrl":64,"ownerHtmlUrl":65,"ownerBlogUrl":66,"ownerDescription":6,"updatedAt":67,"install":68,"resources":81},"01M71MZV0G7Y9NRXGQQZRFGFAS","fastapi-expert",null,"Use when building an async Python API with FastAPI and Pydantic V2 end to end: endpoints, async database access, JWT auth, WebSockets and pytest tests. A persona with deep reference files; for a project-structure and idiom catalogue use fastapi-patterns.","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\u002Ffastapi-expert\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Ffastapi-expert\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"fastapi","fastapi expert","expert","pytest","patterns","websockets","Pydantic","structure","api","query","when","database","access","persona","files","end","project","auth","claude-skills","deep","2026-11-10 10:56:23",false,"---\nname: fastapi-expert\ndescription: \"Use when building an async Python API with FastAPI and Pydantic V2 end to end: endpoints, async database access, JWT auth, WebSockets and pytest tests. A persona with deep reference files; for a project-structure and idiom catalogue use fastapi-patterns.\"\ntags: [\"engineering\",\"backend\",\"fastapi\",\"python\",\"api\"]\ntools: [\"monograph_query\",\"monograph_context\"]\nlicense: MIT\nsource: https:\u002F\u002Fgithub.com\u002FJeffallan\u002Fclaude-skills\nsource_path: \"skills\u002Ffastapi-expert\"\nsource_commit: 882ef55e377dbf9a4dbe496bb41ac6ccd0e555cf\n---\n# FastAPI Expert\n\nDeep expertise in async Python, Pydantic V2, and production-grade API development with FastAPI.\n\n## When to Use This Skill\n\n- Building REST APIs with FastAPI\n- Implementing Pydantic V2 validation schemas\n- Setting up async database operations\n- Implementing JWT authentication\u002Fauthorization\n- Creating WebSocket endpoints\n- Optimizing API performance\n\n## Core Workflow\n\n1. **Analyze requirements** — Identify endpoints, data models, auth needs\n2. **Design schemas** — Create Pydantic V2 models for validation\n3. **Implement** — Write async endpoints with proper dependency injection\n4. **Secure** — Add authentication, authorization, rate limiting\n5. **Test** — Write async tests with pytest and httpx; run `pytest` after each endpoint group and verify OpenAPI docs at `\u002Fdocs`\n\n> **Checkpoint after each step:** confirm schemas validate correctly, endpoints return expected HTTP status codes, and `\u002Fdocs` reflects the intended API surface before proceeding.\n\n## Minimal Complete Example\n\nSchema + endpoint + dependency injection in one cohesive unit:\n\n```python\n# schemas.py\nfrom pydantic import BaseModel, EmailStr, field_validator, model_config\n\nclass UserCreate(BaseModel):\n    model_config = model_config(str_strip_whitespace=True)\n\n    email: EmailStr\n    password: str\n    name: str | None = None\n\n    @field_validator(\"password\")\n    @classmethod\n    def password_strength(cls, v: str) -> str:\n        if len(v) \u003C 8:\n            raise ValueError(\"Password must be at least 8 characters\")\n        return v\n\nclass UserResponse(BaseModel):\n    model_config = model_config(from_attributes=True)\n\n    id: int\n    email: EmailStr\n    name: str | None = None\n```\n\n```python\n# routers\u002Fusers.py\nfrom fastapi import APIRouter, Depends, HTTPException, status\nfrom sqlalchemy.ext.asyncio import AsyncSession\nfrom typing import Annotated\n\nfrom app.database import get_db\nfrom app.schemas import UserCreate, UserResponse\nfrom app import crud\n\nrouter = APIRouter(prefix=\"\u002Fusers\", tags=[\"users\"])\n\nDbDep = Annotated[AsyncSession, Depends(get_db)]\n\n@router.post(\"\u002F\", response_model=UserResponse, status_code=status.HTTP_201_CREATED)\nasync def create_user(payload: UserCreate, db: DbDep) -> UserResponse:\n    existing = await crud.get_user_by_email(db, payload.email)\n    if existing:\n        raise HTTPException(status_code=status.HTTP_409_CONFLICT, detail=\"Email already registered\")\n    return await crud.create_user(db, payload)\n```\n\n```python\n# crud.py\nfrom sqlalchemy import select\nfrom sqlalchemy.ext.asyncio import AsyncSession\nfrom app.models import User\nfrom app.schemas import UserCreate\nfrom app.security import hash_password\n\nasync def get_user_by_email(db: AsyncSession, email: str) -> User | None:\n    result = await db.execute(select(User).where(User.email == email))\n    return result.scalar_one_or_none()\n\nasync def create_user(db: AsyncSession, payload: UserCreate) -> User:\n    user = User(email=payload.email, hashed_password=hash_password(payload.password), name=payload.name)\n    db.add(user)\n    await db.commit()\n    await db.refresh(user)\n    return user\n```\n\n## JWT Authentication Snippet\n\n```python\n# security.py\nfrom datetime import datetime, timedelta, timezone\nfrom jose import JWTError, jwt\nfrom fastapi import Depends, HTTPException, status\nfrom fastapi.security import OAuth2PasswordBearer\nfrom typing import Annotated\n\nSECRET_KEY = \"read-from-env\"  # use os.environ \u002F settings\nALGORITHM = \"HS256\"\noauth2_scheme = OAuth2PasswordBearer(tokenUrl=\"\u002Fauth\u002Ftoken\")\n\ndef create_access_token(subject: str, expires_delta: timedelta = timedelta(minutes=30)) -> str:\n    payload = {\"sub\": subject, \"exp\": datetime.now(timezone.utc) + expires_delta}\n    return jwt.encode(payload, SECRET_KEY, algorithm=ALGORITHM)\n\nasync def get_current_user(token: Annotated[str, Depends(oauth2_scheme)]) -> str:\n    try:\n        data = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])\n        subject: str | None = data.get(\"sub\")\n        if subject is None:\n            raise ValueError\n        return subject\n    except (JWTError, ValueError):\n        raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail=\"Invalid credentials\")\n\nCurrentUser = Annotated[str, Depends(get_current_user)]\n```\n\n## Reference Guide\n\nLoad detailed guidance based on context:\n\n| Topic | Reference | Load When |\n|-------|-----------|-----------|\n| Pydantic V2 | `references\u002Fpydantic-v2.md` | Creating schemas, validation, model_config |\n| SQLAlchemy | `references\u002Fasync-sqlalchemy.md` | Async database, models, CRUD operations |\n| Endpoints | `references\u002Fendpoints-routing.md` | APIRouter, dependencies, routing |\n| Authentication | `references\u002Fauthentication.md` | JWT, OAuth2, get_current_user |\n| Testing | `references\u002Ftesting-async.md` | pytest-asyncio, httpx, fixtures |\n| Django Migration | `references\u002Fmigration-from-django.md` | Migrating from Django\u002FDRF to FastAPI |\n\n## Constraints\n\n### MUST DO\n- Use type hints everywhere (FastAPI requires them)\n- Use Pydantic V2 syntax (`field_validator`, `model_validator`, `model_config`)\n- Use `Annotated` pattern for dependency injection\n- Use async\u002Fawait for all I\u002FO operations\n- Use `X | None` instead of `Optional[X]`\n- Return proper HTTP status codes\n- Document endpoints (auto-generated OpenAPI)\n\n### MUST NOT DO\n- Use synchronous database operations\n- Skip Pydantic validation\n- Store passwords in plain text\n- Expose sensitive data in responses\n- Use Pydantic V1 syntax (`@validator`, `class Config`)\n- Mix sync and async code improperly\n- Hardcode configuration values\n\n## Output Templates\n\nWhen implementing FastAPI features, provide:\n1. Schema file (Pydantic models)\n2. Endpoint file (router with endpoints)\n3. CRUD operations if database involved\n4. Brief explanation of key decisions\n\n## Knowledge Reference\n\nFastAPI, Pydantic V2, async SQLAlchemy, Alembic migrations, JWT\u002FOAuth2, pytest-asyncio, httpx, BackgroundTasks, WebSockets, dependency injection, OpenAPI\u002FSwagger\n\n[Documentation](https:\u002F\u002Fjeffallan.github.io\u002Fclaude-skills\u002Fskills\u002Fbackend\u002Ffastapi-expert\u002F)\n","# FastAPI Expert\n\nDeep expertise in async Python, Pydantic V2, and production-grade API development with FastAPI.\n\n## When to Use This Skill\n\n- Building REST APIs with FastAPI\n- Implementing Pydantic V2 validation schemas\n- Setting up async database operations\n- Implementing JWT authentication\u002Fauthorization\n- Creating WebSocket endpoints\n- Optimizing API performance\n\n## Core Workflow\n\n1. **Analyze requirements** — Identify endpoints, data models, auth needs\n2. **Design schemas** — Create Pydantic V2 models for validation\n3. **Implement** — Write async endpoints with proper dependency injection\n4. **Secure** — Add authentication, authorization, rate limiting\n5. **Test** — Write async tests with pytest and httpx; run `pytest` after each endpoint group and verify OpenAPI docs at `\u002Fdocs`\n\n> **Checkpoint after each step:** confirm schemas validate correctly, endpoints return expected HTTP status codes, and `\u002Fdocs` reflects the intended API surface before proceeding.\n\n## Minimal Complete Example\n\nSchema + endpoint + dependency injection in one cohesive unit:\n\n```python\n# schemas.py\nfrom pydantic import BaseModel, EmailStr, field_validator, model_config\n\nclass UserCreate(BaseModel):\n    model_config = model_config(str_strip_whitespace=True)\n\n    email: EmailStr\n    password: str\n    name: str | None = None\n\n    @field_validator(\"password\")\n    @classmethod\n    def password_strength(cls, v: str) -> str:\n        if len(v) \u003C 8:\n            raise ValueError(\"Password must be at least 8 characters\")\n        return v\n\nclass UserResponse(BaseModel):\n    model_config = model_config(from_attributes=True)\n\n    id: int\n    email: EmailStr\n    name: str | None = None\n```\n\n```python\n# routers\u002Fusers.py\nfrom fastapi import APIRouter, Depends, HTTPException, status\nfrom sqlalchemy.ext.asyncio import AsyncSession\nfrom typing import Annotated\n\nfrom app.database import get_db\nfrom app.schemas import UserCreate, UserResponse\nfrom app import crud\n\nrouter = APIRouter(prefix=\"\u002Fusers\", tags=[\"users\"])\n\nDbDep = Annotated[AsyncSession, Depends(get_db)]\n\n@router.post(\"\u002F\", response_model=UserResponse, status_code=status.HTTP_201_CREATED)\nasync def create_user(payload: UserCreate, db: DbDep) -> UserResponse:\n    existing = await crud.get_user_by_email(db, payload.email)\n    if existing:\n        raise HTTPException(status_code=status.HTTP_409_CONFLICT, detail=\"Email already registered\")\n    return await crud.create_user(db, payload)\n```\n\n```python\n# crud.py\nfrom sqlalchemy import select\nfrom sqlalchemy.ext.asyncio import AsyncSession\nfrom app.models import User\nfrom app.schemas import UserCreate\nfrom app.security import hash_password\n\nasync def get_user_by_email(db: AsyncSession, email: str) -> User | None:\n    result = await db.execute(select(User).where(User.email == email))\n    return result.scalar_one_or_none()\n\nasync def create_user(db: AsyncSession, payload: UserCreate) -> User:\n    user = User(email=payload.email, hashed_password=hash_password(payload.password), name=payload.name)\n    db.add(user)\n    await db.commit()\n    await db.refresh(user)\n    return user\n```\n\n## JWT Authentication Snippet\n\n```python\n# security.py\nfrom datetime import datetime, timedelta, timezone\nfrom jose import JWTError, jwt\nfrom fastapi import Depends, HTTPException, status\nfrom fastapi.security import OAuth2PasswordBearer\nfrom typing import Annotated\n\nSECRET_KEY = \"read-from-env\"  # use os.environ \u002F settings\nALGORITHM = \"HS256\"\noauth2_scheme = OAuth2PasswordBearer(tokenUrl=\"\u002Fauth\u002Ftoken\")\n\ndef create_access_token(subject: str, expires_delta: timedelta = timedelta(minutes=30)) -> str:\n    payload = {\"sub\": subject, \"exp\": datetime.now(timezone.utc) + expires_delta}\n    return jwt.encode(payload, SECRET_KEY, algorithm=ALGORITHM)\n\nasync def get_current_user(token: Annotated[str, Depends(oauth2_scheme)]) -> str:\n    try:\n        data = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])\n        subject: str | None = data.get(\"sub\")\n        if subject is None:\n            raise ValueError\n        return subject\n    except (JWTError, ValueError):\n        raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail=\"Invalid credentials\")\n\nCurrentUser = Annotated[str, Depends(get_current_user)]\n```\n\n## Reference Guide\n\nLoad detailed guidance based on context:\n\n| Topic | Reference | Load When |\n|-------|-----------|-----------|\n| Pydantic V2 | `references\u002Fpydantic-v2.md` | Creating schemas, validation, model_config |\n| SQLAlchemy | `references\u002Fasync-sqlalchemy.md` | Async database, models, CRUD operations |\n| Endpoints | `references\u002Fendpoints-routing.md` | APIRouter, dependencies, routing |\n| Authentication | `references\u002Fauthentication.md` | JWT, OAuth2, get_current_user |\n| Testing | `references\u002Ftesting-async.md` | pytest-asyncio, httpx, fixtures |\n| Django Migration | `references\u002Fmigration-from-django.md` | Migrating from Django\u002FDRF to FastAPI |\n\n## Constraints\n\n### MUST DO\n- Use type hints everywhere (FastAPI requires them)\n- Use Pydantic V2 syntax (`field_validator`, `model_validator`, `model_config`)\n- Use `Annotated` pattern for dependency injection\n- Use async\u002Fawait for all I\u002FO operations\n- Use `X | None` instead of `Optional[X]`\n- Return proper HTTP status codes\n- Document endpoints (auto-generated OpenAPI)\n\n### MUST NOT DO\n- Use synchronous database operations\n- Skip Pydantic validation\n- Store passwords in plain text\n- Expose sensitive data in responses\n- Use Pydantic V1 syntax (`@validator`, `class Config`)\n- Mix sync and async code improperly\n- Hardcode configuration values\n\n## Output Templates\n\nWhen implementing FastAPI features, provide:\n1. Schema file (Pydantic models)\n2. Endpoint file (router with endpoints)\n3. CRUD operations if database involved\n4. Brief explanation of key decisions\n\n## Knowledge Reference\n\nFastAPI, Pydantic V2, async SQLAlchemy, Alembic migrations, JWT\u002FOAuth2, pytest-asyncio, httpx, BackgroundTasks, WebSockets, dependency injection, OpenAPI\u002FSwagger\n\n[Documentation](https:\u002F\u002Fjeffallan.github.io\u002Fclaude-skills\u002Fskills\u002Fbackend\u002Ffastapi-expert\u002F)\n",{"name":5,"tags":49,"tools":53,"source":56,"license":14,"description":7,"source_path":57,"source_commit":58},[50,51,24,52,32],"engineering","backend","python",[54,55],"monograph_query","monograph_context","https:\u002F\u002Fgithub.com\u002FJeffallan\u002Fclaude-skills","skills\u002Ffastapi-expert","882ef55e377dbf9a4dbe496bb41ac6ccd0e555cf","main","f7cd4595d0f8959822163e14f9787117765c931a","packages\u002F@monomind\u002Fcli\u002Forg-skills\u002Ffastapi-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-14 03:30:52",{"source":8,"skillName":5,"commands":69,"prompt":79,"zipAvailable":80},[70,73,76],{"tool":71,"command":72},"npx","npx skills add monoes\u002Fmonomind --skill fastapi-expert",{"tool":74,"command":75},"bunx","bunx skills add monoes\u002Fmonomind --skill fastapi-expert",{"tool":77,"command":78},"pnpm","pnpm dlx skills add monoes\u002Fmonomind --skill fastapi-expert","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Ffastapi-expert\u002FSKILL.md",true,[82,87,93,97,101,105,109],{"path":83,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":86,"sourceHtmlUrl":15},"LICENSE.txt","LICENSE","许可证",1056,{"path":88,"resourceType":89,"resourceTypeDesc":90,"sizeBytes":91,"sourceHtmlUrl":92},"references\u002Fasync-sqlalchemy.md","REFERENCE","参考文档",4081,"https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Ffastapi-expert\u002Freferences\u002Fasync-sqlalchemy.md",{"path":94,"resourceType":89,"resourceTypeDesc":90,"sizeBytes":95,"sourceHtmlUrl":96},"references\u002Fauthentication.md",4404,"https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Ffastapi-expert\u002Freferences\u002Fauthentication.md",{"path":98,"resourceType":89,"resourceTypeDesc":90,"sizeBytes":99,"sourceHtmlUrl":100},"references\u002Fendpoints-routing.md",4097,"https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Ffastapi-expert\u002Freferences\u002Fendpoints-routing.md",{"path":102,"resourceType":89,"resourceTypeDesc":90,"sizeBytes":103,"sourceHtmlUrl":104},"references\u002Fmigration-from-django.md",27626,"https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Ffastapi-expert\u002Freferences\u002Fmigration-from-django.md",{"path":106,"resourceType":89,"resourceTypeDesc":90,"sizeBytes":107,"sourceHtmlUrl":108},"references\u002Fpydantic-v2.md",3351,"https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Ffastapi-expert\u002Freferences\u002Fpydantic-v2.md",{"path":110,"resourceType":89,"resourceTypeDesc":90,"sizeBytes":111,"sourceHtmlUrl":112},"references\u002Ftesting-async.md",4592,"https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Ffastapi-expert\u002Freferences\u002Ftesting-async.md",[114,142,175,202,227,254],{"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":141},"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,33,131,132,133,134,135,136,137,138,139,140],"zk","zk steward","steward","zero-knowledge","engineer","choice","design","knowledge","impact","snark","review","monomind","security review","stark","zettelkasten","cryptography","security","org","blockchain","2026-11-10 13:02:02",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":146,"sourceHtmlUrl":147,"categories":148,"keywords":157,"publishedAt":141},"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",[149,152],{"categoryNo":150,"categoryName":151,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":153,"categoryName":154,"taxonomyType":155,"taxonomyTypeDesc":156},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[158,159,160,126,161,162,34,163,33,164,165,166,167,168,169,170,171,172,173,174],"writing","writing plans","plans","superpowers","implementation plan","you","code","tasks","plan","product","write","commands","paths","suggest","coding","context","ZeRO",{"skillNo":176,"name":177,"nameZh":6,"description":178,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":118,"licenseFileUrl":179,"sourceHtmlUrl":180,"categories":181,"keywords":185,"publishedAt":141},"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",[182],{"categoryNo":183,"categoryName":184,"taxonomyType":155,"taxonomyTypeDesc":156},"01JBSEEDCAT000000000000031","产品经理",[168,186,187,188,189,129,190,34,191,192,193,167,194,195,196,197,198,199,200,201],"write spec","spec","user request","problem","acceptance","ask","vague","work","request","scoping","idea","metrics","feature","problem statement","use","document",{"skillNo":203,"name":204,"nameZh":6,"description":205,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":118,"licenseFileUrl":206,"sourceHtmlUrl":207,"categories":208,"keywords":212,"publishedAt":141},"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",[209],{"categoryNo":210,"categoryName":211,"taxonomyType":155,"taxonomyTypeDesc":156},"01JBSEEDCAT000000000000033","数据分析师",[33,168,213,214,215,216,129,200,34,217,218,219,220,193,221,222,223,224,225,226],"write query","postgres","for","snowflake","best practices","natural-language","with","multi","github","sql","https","syntax","plugins","data",{"skillNo":228,"name":229,"nameZh":6,"description":230,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":118,"licenseFileUrl":6,"sourceHtmlUrl":231,"categories":232,"keywords":239,"publishedAt":141},"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",[233,236],{"categoryNo":234,"categoryName":235,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":237,"categoryName":238,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[240,241,242,243,215,244,245,246,247,130,248,249,250,33,133,221,251,252,253,223],"Workflow Automation","automation","workflow","parallel","actions","ci","triggers","github actions","maintain","filters","caching","build","dependency","devops",{"skillNo":255,"name":256,"nameZh":6,"description":257,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":118,"licenseFileUrl":6,"sourceHtmlUrl":258,"categories":259,"keywords":261,"publishedAt":141},"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",[260],{"categoryNo":237,"categoryName":238,"taxonomyType":21,"taxonomyTypeDesc":22},[242,262,263,264,265,266,267,215,268,269,164,270,271,272,133,221,273,274,223,275],"workflow architect","architect","trees","user journeys","branch","planning","map","workflows","architecture","state","leadership","recovery","operations","systems"]