[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DRC73WY89M08N76PC74782":3,"skill-same:01M6DRC73WY89M08N76PC74782":105},{"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":25,"publishedAt":46,"linkOnly":47,"markdownContent":48,"markdownBody":49,"frontMatter":50,"refName":58,"commitSha":59,"skillDirectory":60,"forksCount":61,"repositoryHtmlUrl":62,"repositoryHomepageUrl":6,"ownerHtmlUrl":63,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":64,"install":65,"resources":78},"01M6DRC73WY89M08N76PC74782","rag-architect",null,"Designs and implements production-grade RAG systems by chunking documents, generating embeddings, configuring vector stores, building hybrid search pipelines, applying reranking, and evaluating retrieval quality. Use when building RAG systems, vector databases, or knowledge-grounded AI applications requiring semantic search, document retrieval, context augmentation, similarity search, or embedding-based indexing.","AntifragileTech\u002Fantifragile-claude-code","AntifragileTech","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F174357194?v=4","01M6DQCYMK4CDSQQAN0ZC72NTV","01M6DQCYS9YPW1WKMQ5TJMPQ43",9,"MIT","https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fdev\u002Frag-architect\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口",[26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],"rag","rag architect","architect","indexing","design","optimizer","knowledge base","expert","databases","vector database","vector stores","knowledge","api","monitoring","vector","search","database","semantic search","documents","architecture","2026-11-10 10:12:30",false,"---\nname: rag-architect\ndescription: Designs and implements production-grade RAG systems by chunking documents, generating embeddings, configuring vector stores, building hybrid search pipelines, applying reranking, and evaluating retrieval quality. Use when building RAG systems, vector databases, or knowledge-grounded AI applications requiring semantic search, document retrieval, context augmentation, similarity search, or embedding-based indexing.\nlicense: MIT\nmetadata:\n  author: https:\u002F\u002Fgithub.com\u002FJeffallan\n  version: \"1.1.0\"\n  domain: data-ml\n  triggers: RAG, retrieval-augmented generation, vector search, embeddings, semantic search, vector database, document retrieval, knowledge base, context retrieval, similarity search\n  role: architect\n  scope: system-design\n  output-format: architecture\n  related-skills: python-pro, database-optimizer, monitoring-expert, api-designer\n---\n\n# RAG Architect\n\n## Core Workflow\n\n1. **Requirements Analysis** — Identify retrieval needs, latency constraints, accuracy requirements, and scale\n2. **Vector Store Design** — Select database, schema design, indexing strategy, sharding approach\n3. **Chunking Strategy** — Document splitting, overlap, semantic boundaries, metadata enrichment\n4. **Retrieval Pipeline** — Embedding selection, query transformation, hybrid search, reranking\n5. **Evaluation & Iteration** — Metrics tracking, retrieval debugging, continuous optimization\n\nFor each step, validate before moving on (see checkpoints below).\n\n## Reference Guide\n\nLoad detailed guidance based on context:\n\n| Topic | Reference | Load When |\n|-------|-----------|-----------|\n| Vector Databases | `references\u002Fvector-databases.md` | Comparing Pinecone, Weaviate, Chroma, pgvector, Qdrant |\n| Embedding Models | `references\u002Fembedding-models.md` | Selecting embeddings, fine-tuning, dimension trade-offs |\n| Chunking Strategies | `references\u002Fchunking-strategies.md` | Document splitting, overlap, semantic chunking |\n| Retrieval Optimization | `references\u002Fretrieval-optimization.md` | Hybrid search, reranking, query expansion, filtering |\n| RAG Evaluation | `references\u002Frag-evaluation.md` | Metrics, evaluation frameworks, debugging retrieval |\n\n## Implementation Examples\n\n### 1. Chunking Documents\n\n```python\nfrom langchain.text_splitter import RecursiveCharacterTextSplitter\n\n# Evaluate chunk_size on your domain data — never use 512 blindly\nsplitter = RecursiveCharacterTextSplitter(\n    chunk_size=800,\n    chunk_overlap=100,\n    separators=[\"\\n\\n\", \"\\n\", \". \", \" \"],\n)\n\nchunks = splitter.create_documents(\n    texts=[doc.page_content for doc in raw_docs],\n    metadatas=[{\"source\": doc.metadata[\"source\"], \"timestamp\": doc.metadata.get(\"timestamp\")} for doc in raw_docs],\n)\n```\n\n**Checkpoint:** `assert all(c.metadata.get(\"source\") for c in chunks), \"Missing source metadata\"`\n\n### 2. Generating Embeddings & Indexing\n\n```python\nfrom openai import OpenAI\nimport qdrant_client\nfrom qdrant_client.models import VectorParams, Distance, PointStruct\n\nclient = OpenAI()\nqdrant = qdrant_client.QdrantClient(\"localhost\", port=6333)\n\n# Create collection\nqdrant.recreate_collection(\n    collection_name=\"knowledge_base\",\n    vectors_config=VectorParams(size=1536, distance=Distance.COSINE),\n)\n\ndef embed_chunks(chunks: list[str], model: str = \"text-embedding-3-small\") -> list[list[float]]:\n    response = client.embeddings.create(input=chunks, model=model)\n    return [r.embedding for r in response.data]\n\n# Idempotent upsert with deduplication via deterministic IDs\nimport hashlib, uuid\n\npoints = []\nfor i, chunk in enumerate(chunks):\n    doc_id = str(uuid.UUID(hashlib.md5(chunk.page_content.encode()).hexdigest()))\n    embedding = embed_chunks([chunk.page_content])[0]\n    points.append(PointStruct(id=doc_id, vector=embedding, payload=chunk.metadata))\n\nqdrant.upsert(collection_name=\"knowledge_base\", points=points)\n```\n\n**Checkpoint:** `assert qdrant.count(\"knowledge_base\").count == len(set(p.id for p in points)), \"Deduplication failed\"`\n\n### 3. Hybrid Search (Vector + BM25)\n\n```python\nfrom qdrant_client.models import Filter, FieldCondition, MatchValue, SparseVector\nfrom rank_bm25 import BM25Okapi\n\ndef hybrid_search(query: str, tenant_id: str, top_k: int = 20) -> list:\n    # Dense retrieval\n    query_embedding = embed_chunks([query])[0]\n    tenant_filter = Filter(must=[FieldCondition(key=\"tenant_id\", match=MatchValue(value=tenant_id))])\n    dense_results = qdrant.search(\n        collection_name=\"knowledge_base\",\n        query_vector=query_embedding,\n        query_filter=tenant_filter,\n        limit=top_k,\n    )\n\n    # Sparse retrieval (BM25)\n    corpus = [r.payload.get(\"text\", \"\") for r in dense_results]\n    bm25 = BM25Okapi([doc.split() for doc in corpus])\n    bm25_scores = bm25.get_scores(query.split())\n\n    # Reciprocal Rank Fusion\n    ranked = sorted(\n        zip(dense_results, bm25_scores),\n        key=lambda x: 0.6 * x[0].score + 0.4 * x[1],\n        reverse=True,\n    )\n    return [r for r, _ in ranked[:top_k]]\n```\n\n**Checkpoint:** `assert len(hybrid_search(\"test query\", tenant_id=\"demo\")) > 0, \"Hybrid search returned no results\"`\n\n### 4. Reranking Top-K Results\n\n```python\nimport cohere\n\nco = cohere.Client(\"YOUR_API_KEY\")\n\ndef rerank(query: str, results: list, top_n: int = 5) -> list:\n    docs = [r.payload.get(\"text\", \"\") for r in results]\n    reranked = co.rerank(query=query, documents=docs, top_n=top_n, model=\"rerank-english-v3.0\")\n    return [results[r.index] for r in reranked.results]\n```\n\n### 5. Retrieval Evaluation\n\n```python\n# Run precision@k and recall@k against a labeled evaluation set\n# python evaluate.py --metrics precision@10 recall@10 mrr --collection knowledge_base\n\nfrom ragas import evaluate\nfrom ragas.metrics import context_precision, context_recall, faithfulness, answer_relevancy\nfrom datasets import Dataset\n\neval_dataset = Dataset.from_dict({\n    \"question\": questions,\n    \"contexts\": retrieved_contexts,\n    \"answer\": generated_answers,\n    \"ground_truth\": ground_truth_answers,\n})\n\nresults = evaluate(eval_dataset, metrics=[context_precision, context_recall, faithfulness, answer_relevancy])\nprint(results)\n```\n\n**Checkpoint:** Target `context_precision >= 0.7` and `context_recall >= 0.6` before moving to LLM integration.\n\n## Constraints\n\n### MUST DO\n- Evaluate multiple embedding models on your domain data before committing\n- Implement hybrid search (vector + keyword) for production systems\n- Add metadata filters for multi-tenant or domain-specific retrieval\n- Measure retrieval metrics (precision@k, recall@k, MRR, NDCG)\n- Use reranking for top-k results before passing context to LLM\n- Implement idempotent ingestion with deduplication (deterministic IDs)\n- Monitor retrieval latency and quality over time\n- Version embeddings and plan for model migration\n\n### MUST NOT DO\n- Use default chunk size (512) without evaluation on your domain data\n- Skip metadata enrichment (source, timestamp, section)\n- Ignore retrieval quality metrics in favor of only LLM output quality\n- Store raw documents without preprocessing\u002Fcleaning\n- Use cosine similarity alone for complex multi-domain retrieval\n- Deploy without testing on production-like data volumes\n- Forget to handle edge cases (empty results, malformed docs)\n- Couple the embedding model tightly to application code\n\n## Output Templates\n\nWhen designing RAG architecture, deliver:\n1. System architecture diagram (ingestion + retrieval pipelines)\n2. Vector database selection with trade-off analysis\n3. Chunking strategy with examples and rationale\n4. Retrieval pipeline design (query → results flow)\n5. Evaluation plan with metrics, benchmarks, and pass\u002Ffail thresholds\n","# RAG Architect\n\n## Core Workflow\n\n1. **Requirements Analysis** — Identify retrieval needs, latency constraints, accuracy requirements, and scale\n2. **Vector Store Design** — Select database, schema design, indexing strategy, sharding approach\n3. **Chunking Strategy** — Document splitting, overlap, semantic boundaries, metadata enrichment\n4. **Retrieval Pipeline** — Embedding selection, query transformation, hybrid search, reranking\n5. **Evaluation & Iteration** — Metrics tracking, retrieval debugging, continuous optimization\n\nFor each step, validate before moving on (see checkpoints below).\n\n## Reference Guide\n\nLoad detailed guidance based on context:\n\n| Topic | Reference | Load When |\n|-------|-----------|-----------|\n| Vector Databases | `references\u002Fvector-databases.md` | Comparing Pinecone, Weaviate, Chroma, pgvector, Qdrant |\n| Embedding Models | `references\u002Fembedding-models.md` | Selecting embeddings, fine-tuning, dimension trade-offs |\n| Chunking Strategies | `references\u002Fchunking-strategies.md` | Document splitting, overlap, semantic chunking |\n| Retrieval Optimization | `references\u002Fretrieval-optimization.md` | Hybrid search, reranking, query expansion, filtering |\n| RAG Evaluation | `references\u002Frag-evaluation.md` | Metrics, evaluation frameworks, debugging retrieval |\n\n## Implementation Examples\n\n### 1. Chunking Documents\n\n```python\nfrom langchain.text_splitter import RecursiveCharacterTextSplitter\n\n# Evaluate chunk_size on your domain data — never use 512 blindly\nsplitter = RecursiveCharacterTextSplitter(\n    chunk_size=800,\n    chunk_overlap=100,\n    separators=[\"\\n\\n\", \"\\n\", \". \", \" \"],\n)\n\nchunks = splitter.create_documents(\n    texts=[doc.page_content for doc in raw_docs],\n    metadatas=[{\"source\": doc.metadata[\"source\"], \"timestamp\": doc.metadata.get(\"timestamp\")} for doc in raw_docs],\n)\n```\n\n**Checkpoint:** `assert all(c.metadata.get(\"source\") for c in chunks), \"Missing source metadata\"`\n\n### 2. Generating Embeddings & Indexing\n\n```python\nfrom openai import OpenAI\nimport qdrant_client\nfrom qdrant_client.models import VectorParams, Distance, PointStruct\n\nclient = OpenAI()\nqdrant = qdrant_client.QdrantClient(\"localhost\", port=6333)\n\n# Create collection\nqdrant.recreate_collection(\n    collection_name=\"knowledge_base\",\n    vectors_config=VectorParams(size=1536, distance=Distance.COSINE),\n)\n\ndef embed_chunks(chunks: list[str], model: str = \"text-embedding-3-small\") -> list[list[float]]:\n    response = client.embeddings.create(input=chunks, model=model)\n    return [r.embedding for r in response.data]\n\n# Idempotent upsert with deduplication via deterministic IDs\nimport hashlib, uuid\n\npoints = []\nfor i, chunk in enumerate(chunks):\n    doc_id = str(uuid.UUID(hashlib.md5(chunk.page_content.encode()).hexdigest()))\n    embedding = embed_chunks([chunk.page_content])[0]\n    points.append(PointStruct(id=doc_id, vector=embedding, payload=chunk.metadata))\n\nqdrant.upsert(collection_name=\"knowledge_base\", points=points)\n```\n\n**Checkpoint:** `assert qdrant.count(\"knowledge_base\").count == len(set(p.id for p in points)), \"Deduplication failed\"`\n\n### 3. Hybrid Search (Vector + BM25)\n\n```python\nfrom qdrant_client.models import Filter, FieldCondition, MatchValue, SparseVector\nfrom rank_bm25 import BM25Okapi\n\ndef hybrid_search(query: str, tenant_id: str, top_k: int = 20) -> list:\n    # Dense retrieval\n    query_embedding = embed_chunks([query])[0]\n    tenant_filter = Filter(must=[FieldCondition(key=\"tenant_id\", match=MatchValue(value=tenant_id))])\n    dense_results = qdrant.search(\n        collection_name=\"knowledge_base\",\n        query_vector=query_embedding,\n        query_filter=tenant_filter,\n        limit=top_k,\n    )\n\n    # Sparse retrieval (BM25)\n    corpus = [r.payload.get(\"text\", \"\") for r in dense_results]\n    bm25 = BM25Okapi([doc.split() for doc in corpus])\n    bm25_scores = bm25.get_scores(query.split())\n\n    # Reciprocal Rank Fusion\n    ranked = sorted(\n        zip(dense_results, bm25_scores),\n        key=lambda x: 0.6 * x[0].score + 0.4 * x[1],\n        reverse=True,\n    )\n    return [r for r, _ in ranked[:top_k]]\n```\n\n**Checkpoint:** `assert len(hybrid_search(\"test query\", tenant_id=\"demo\")) > 0, \"Hybrid search returned no results\"`\n\n### 4. Reranking Top-K Results\n\n```python\nimport cohere\n\nco = cohere.Client(\"YOUR_API_KEY\")\n\ndef rerank(query: str, results: list, top_n: int = 5) -> list:\n    docs = [r.payload.get(\"text\", \"\") for r in results]\n    reranked = co.rerank(query=query, documents=docs, top_n=top_n, model=\"rerank-english-v3.0\")\n    return [results[r.index] for r in reranked.results]\n```\n\n### 5. Retrieval Evaluation\n\n```python\n# Run precision@k and recall@k against a labeled evaluation set\n# python evaluate.py --metrics precision@10 recall@10 mrr --collection knowledge_base\n\nfrom ragas import evaluate\nfrom ragas.metrics import context_precision, context_recall, faithfulness, answer_relevancy\nfrom datasets import Dataset\n\neval_dataset = Dataset.from_dict({\n    \"question\": questions,\n    \"contexts\": retrieved_contexts,\n    \"answer\": generated_answers,\n    \"ground_truth\": ground_truth_answers,\n})\n\nresults = evaluate(eval_dataset, metrics=[context_precision, context_recall, faithfulness, answer_relevancy])\nprint(results)\n```\n\n**Checkpoint:** Target `context_precision >= 0.7` and `context_recall >= 0.6` before moving to LLM integration.\n\n## Constraints\n\n### MUST DO\n- Evaluate multiple embedding models on your domain data before committing\n- Implement hybrid search (vector + keyword) for production systems\n- Add metadata filters for multi-tenant or domain-specific retrieval\n- Measure retrieval metrics (precision@k, recall@k, MRR, NDCG)\n- Use reranking for top-k results before passing context to LLM\n- Implement idempotent ingestion with deduplication (deterministic IDs)\n- Monitor retrieval latency and quality over time\n- Version embeddings and plan for model migration\n\n### MUST NOT DO\n- Use default chunk size (512) without evaluation on your domain data\n- Skip metadata enrichment (source, timestamp, section)\n- Ignore retrieval quality metrics in favor of only LLM output quality\n- Store raw documents without preprocessing\u002Fcleaning\n- Use cosine similarity alone for complex multi-domain retrieval\n- Deploy without testing on production-like data volumes\n- Forget to handle edge cases (empty results, malformed docs)\n- Couple the embedding model tightly to application code\n\n## Output Templates\n\nWhen designing RAG architecture, deliver:\n1. System architecture diagram (ingestion + retrieval pipelines)\n2. Vector database selection with trade-off analysis\n3. Chunking strategy with examples and rationale\n4. Retrieval pipeline design (query → results flow)\n5. Evaluation plan with metrics, benchmarks, and pass\u002Ffail thresholds\n",{"name":5,"license":14,"metadata":51,"description":7},{"role":28,"scope":52,"author":53,"domain":54,"version":55,"triggers":56,"output-format":45,"related-skills":57},"system-design","https:\u002F\u002Fgithub.com\u002FJeffallan","data-ml","1.1.0","RAG, retrieval-augmented generation, vector search, embeddings, semantic search, vector database, document retrieval, knowledge base, context retrieval, similarity search","python-pro, database-optimizer, monitoring-expert, api-designer","master","c73386b305dec167db7654e0e6feacb462d4f9dc","assets\u002Fskills\u002Fdev\u002Frag-architect",1,"https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code","https:\u002F\u002Fgithub.com\u002FAntifragileTech","2026-10-02 14:22:14",{"source":8,"skillName":5,"commands":66,"prompt":76,"zipAvailable":77},[67,70,73],{"tool":68,"command":69},"npx","npx skills add AntifragileTech\u002Fantifragile-claude-code --skill rag-architect",{"tool":71,"command":72},"bunx","bunx skills add AntifragileTech\u002Fantifragile-claude-code --skill rag-architect",{"tool":74,"command":75},"pnpm","pnpm dlx skills add AntifragileTech\u002Fantifragile-claude-code --skill rag-architect","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fdev\u002Frag-architect\u002FSKILL.md",true,[79,85,89,93,97,101],{"path":80,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":83,"sourceHtmlUrl":84},"agents\u002Fopenai.yaml","REFERENCE","参考文档",123,"https:\u002F\u002Fgithub.com\u002Findigoai-us\u002Fhq-core\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fknowledge-pulse\u002Fagents\u002Fopenai.yaml",{"path":86,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":87,"sourceHtmlUrl":88},"references\u002Fchunking-strategies.md",25083,"https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fdev\u002Frag-architect\u002Freferences\u002Fchunking-strategies.md",{"path":90,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":91,"sourceHtmlUrl":92},"references\u002Fembedding-models.md",15330,"https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fdev\u002Frag-architect\u002Freferences\u002Fembedding-models.md",{"path":94,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":95,"sourceHtmlUrl":96},"references\u002Frag-evaluation.md",24288,"https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fdev\u002Frag-architect\u002Freferences\u002Frag-evaluation.md",{"path":98,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":99,"sourceHtmlUrl":100},"references\u002Fretrieval-optimization.md",21922,"https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fdev\u002Frag-architect\u002Freferences\u002Fretrieval-optimization.md",{"path":102,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":103,"sourceHtmlUrl":104},"references\u002Fvector-databases.md",14257,"https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fdev\u002Frag-architect\u002Freferences\u002Fvector-databases.md",[106,130,145,160,173,186],{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":123,"publishedAt":46},"01M6DT9Q6VYA615SCXR757TZZ7","writing-skills","Use when creating new skills, editing existing skills, or verifying skills work before deployment","https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fthinking\u002Fwriting-skills\u002FSKILL.md",[112,115,118],{"categoryNo":113,"categoryName":114,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":116,"categoryName":117,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":119,"categoryName":120,"taxonomyType":121,"taxonomyTypeDesc":122},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[124,125,126,127,128,129],"writing skills","writing","use","editing","work","deployment",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":138,"publishedAt":46},"01M6DT9GFHDNY90P41WGAE1TV0","writing-plans","Use when you have a spec or requirements for a multi-step task, before touching code","https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fthinking\u002Fwriting-plans\u002FSKILL.md",[136,137],{"categoryNo":116,"categoryName":117,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":119,"categoryName":120,"taxonomyType":121,"taxonomyTypeDesc":122},[139,140,125,141,142,126,143,144],"plans","writing plans","requirements","task","code","spec",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":153,"publishedAt":46},"01M6DT9C6PFGD86WS3HY7YE3XG","docs:write-concisely","Apply writing rules to any documentation that humans will read. Makes your writing clearer, stronger, and more professional.","https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fthinking\u002Fwrite-concisely\u002FSKILL.md",[151,152],{"categoryNo":116,"categoryName":117,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":119,"categoryName":120,"taxonomyType":121,"taxonomyTypeDesc":122},[154,155,156,157,158,159,125],"docs:write concisely","write","docs","read","Rules","documentation",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":166,"publishedAt":46},"01M6DT98AWQ27P0N1CG97WAG66","kaizen:why","Iterative Five Whys root cause analysis drilling from symptoms to fundamentals","https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fthinking\u002Fwhy\u002FSKILL.md",[],[162,167,168,169,170,171,172],"why","kaizen","issue","five whys","analysis","root cause analysis",{"skillNo":174,"name":175,"nameZh":6,"description":176,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":177,"categories":178,"keywords":179,"publishedAt":46},"01M6DT93EH25NAX19R3WGE1P53","verification-loop","A comprehensive verification system for Claude Code sessions.","https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fthinking\u002Fverification-loop\u002FSKILL.md",[],[180,181,182,183,143,184,185],"verification loop","verification","loop","sessions","claude code sessions","system",{"skillNo":187,"name":188,"nameZh":6,"description":189,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":190,"categories":191,"keywords":192,"publishedAt":46},"01M6DT90GW7Z7VCN98P9DVYSNC","verification-before-completion","Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always","https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fthinking\u002Fverification-before-completion\u002FSKILL.md",[],[193,181,194,128,126,195,196,197],"verification before completion","commands","evidence","claim","complete"]