[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6G26SYD1GR7VEFYNKSSF3QV":3,"skill-same:01M6G26SYD1GR7VEFYNKSSF3QV":50},{"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":23,"linkOnly":24,"markdownContent":25,"markdownBody":25,"frontMatter":26,"refName":27,"commitSha":28,"skillDirectory":29,"forksCount":30,"repositoryHtmlUrl":31,"repositoryHomepageUrl":6,"ownerHtmlUrl":32,"ownerBlogUrl":33,"ownerDescription":34,"updatedAt":35,"install":36,"resources":49},"01M6G26SYD1GR7VEFYNKSSF3QV","project-guidelines-example",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\u002Fecc\u002Fdocs\u002Fja-JP\u002Fskills\u002Fproject-guidelines-example\u002FSKILL.md",[],[18,19,20,21,22],"guidelines","project guidelines example","example","project","Project Guidelines","2026-11-10 10:12:30",false,"# プロジェクトガイドラインスキル（例）\n\nこれはプロジェクト固有のスキルの例です。自分のプロジェクトのテンプレートとして使用してください。\n\n実際の本番アプリケーションに基づいています：[Zenith](https:\u002F\u002Fzenith.chat) - AI駆動の顧客発見プラットフォーム。\n\n---\n\n## 使用するタイミング\n\nこのスキルが設計された特定のプロジェクトで作業する際に参照してください。プロジェクトスキルには以下が含まれます：\n- アーキテクチャの概要\n- ファイル構造\n- コードパターン\n- テスト要件\n- デプロイメントワークフロー\n\n---\n\n## アーキテクチャの概要\n\n**技術スタック：**\n- **フロントエンド**: Next.js 15 (App Router), TypeScript, React\n- **バックエンド**: FastAPI (Python), Pydanticモデル\n- **データベース**: Supabase (PostgreSQL)\n- **AI**: Claudeツール呼び出しと構造化出力付きAPI\n- **デプロイメント**: Google Cloud Run\n- **テスト**: Playwright (E2E), pytest (バックエンド), React Testing Library\n\n**サービス：**\n```\n┌─────────────────────────────────────────────────────────────┐\n│                         Frontend                            │\n│  Next.js 15 + TypeScript + TailwindCSS                     │\n│  Deployed: Vercel \u002F Cloud Run                              │\n└─────────────────────────────────────────────────────────────┘\n                              │\n                              ▼\n┌─────────────────────────────────────────────────────────────┐\n│                         Backend                             │\n│  FastAPI + Python 3.11 + Pydantic                          │\n│  Deployed: Cloud Run                                       │\n└─────────────────────────────────────────────────────────────┘\n                              │\n              ┌───────────────┼───────────────┐\n              ▼               ▼               ▼\n        ┌──────────┐   ┌──────────┐   ┌──────────┐\n        │ Supabase │   │  Claude  │   │  Redis   │\n        │ Database │   │   API    │   │  Cache   │\n        └──────────┘   └──────────┘   └──────────┘\n```\n\n---\n\n## ファイル構造\n\n```\nproject\u002F\n├── frontend\u002F\n│   └── src\u002F\n│       ├── app\u002F              # Next.js app routerページ\n│       │   ├── api\u002F          # APIルート\n│       │   ├── (auth)\u002F       # 認証保護されたルート\n│       │   └── workspace\u002F    # メインアプリワークスペース\n│       ├── components\u002F       # Reactコンポーネント\n│       │   ├── ui\u002F           # ベースUIコンポーネント\n│       │   ├── forms\u002F        # フォームコンポーネント\n│       │   └── layouts\u002F      # レイアウトコンポーネント\n│       ├── hooks\u002F            # カスタムReactフック\n│       ├── lib\u002F              # ユーティリティ\n│       ├── types\u002F            # TypeScript定義\n│       └── config\u002F           # 設定\n│\n├── backend\u002F\n│   ├── routers\u002F              # FastAPIルートハンドラ\n│   ├── models.py             # Pydanticモデル\n│   ├── main.py               # FastAPIアプリエントリ\n│   ├── auth_system.py        # 認証\n│   ├── database.py           # データベース操作\n│   ├── services\u002F             # ビジネスロジック\n│   └── tests\u002F                # pytestテスト\n│\n├── deploy\u002F                   # デプロイメント設定\n├── docs\u002F                     # ドキュメント\n└── scripts\u002F                  # ユーティリティスクリプト\n```\n\n---\n\n## コードパターン\n\n### APIレスポンス形式 (FastAPI)\n\n```python\nfrom pydantic import BaseModel\nfrom typing import Generic, TypeVar, Optional\n\nT = TypeVar('T')\n\nclass ApiResponse(BaseModel, Generic[T]):\n    success: bool\n    data: Optional[T] = None\n    error: Optional[str] = None\n\n    @classmethod\n    def ok(cls, data: T) -> \"ApiResponse[T]\":\n        return cls(success=True, data=data)\n\n    @classmethod\n    def fail(cls, error: str) -> \"ApiResponse[T]\":\n        return cls(success=False, error=error)\n```\n\n### フロントエンドAPI呼び出し (TypeScript)\n\n```typescript\ninterface ApiResponse\u003CT> {\n  success: boolean\n  data?: T\n  error?: string\n}\n\nasync function fetchApi\u003CT>(\n  endpoint: string,\n  options?: RequestInit\n): Promise\u003CApiResponse\u003CT>> {\n  try {\n    const response = await fetch(`\u002Fapi${endpoint}`, {\n      ...options,\n      headers: {\n        'Content-Type': 'application\u002Fjson',\n        ...options?.headers,\n      },\n    })\n\n    if (!response.ok) {\n      return { success: false, error: `HTTP ${response.status}` }\n    }\n\n    return await response.json()\n  } catch (error) {\n    return { success: false, error: String(error) }\n  }\n}\n```\n\n### Claude AI統合（構造化出力）\n\n```python\nfrom anthropic import Anthropic\nfrom pydantic import BaseModel\n\nclass AnalysisResult(BaseModel):\n    summary: str\n    key_points: list[str]\n    confidence: float\n\nasync def analyze_with_claude(content: str) -> AnalysisResult:\n    client = Anthropic()\n\n    response = client.messages.create(\n        model=\"claude-sonnet-4-5-20250514\",\n        max_tokens=1024,\n        messages=[{\"role\": \"user\", \"content\": content}],\n        tools=[{\n            \"name\": \"provide_analysis\",\n            \"description\": \"Provide structured analysis\",\n            \"input_schema\": AnalysisResult.model_json_schema()\n        }],\n        tool_choice={\"type\": \"tool\", \"name\": \"provide_analysis\"}\n    )\n\n    # Extract tool use result\n    tool_use = next(\n        block for block in response.content\n        if block.type == \"tool_use\"\n    )\n\n    return AnalysisResult(**tool_use.input)\n```\n\n### カスタムフック (React)\n\n```typescript\nimport { useState, useCallback } from 'react'\n\ninterface UseApiState\u003CT> {\n  data: T | null\n  loading: boolean\n  error: string | null\n}\n\nexport function useApi\u003CT>(\n  fetchFn: () => Promise\u003CApiResponse\u003CT>>\n) {\n  const [state, setState] = useState\u003CUseApiState\u003CT>>({\n    data: null,\n    loading: false,\n    error: null,\n  })\n\n  const execute = useCallback(async () => {\n    setState(prev => ({ ...prev, loading: true, error: null }))\n\n    const result = await fetchFn()\n\n    if (result.success) {\n      setState({ data: result.data!, loading: false, error: null })\n    } else {\n      setState({ data: null, loading: false, error: result.error! })\n    }\n  }, [fetchFn])\n\n  return { ...state, execute }\n}\n```\n\n---\n\n## テスト要件\n\n### バックエンド (pytest)\n\n```bash\n# すべてのテストを実行\npoetry run pytest tests\u002F\n\n# カバレッジ付きで実行\npoetry run pytest tests\u002F --cov=. --cov-report=html\n\n# 特定のテストファイルを実行\npoetry run pytest tests\u002Ftest_auth.py -v\n```\n\n**テスト構造：**\n```python\nimport pytest\nfrom httpx import AsyncClient\nfrom main import app\n\n@pytest.fixture\nasync def client():\n    async with AsyncClient(app=app, base_url=\"http:\u002F\u002Ftest\") as ac:\n        yield ac\n\n@pytest.mark.asyncio\nasync def test_health_check(client: AsyncClient):\n    response = await client.get(\"\u002Fhealth\")\n    assert response.status_code == 200\n    assert response.json()[\"status\"] == \"healthy\"\n```\n\n### フロントエンド (React Testing Library)\n\n```bash\n# テストを実行\nnpm run test\n\n# カバレッジ付きで実行\nnpm run test -- --coverage\n\n# E2Eテストを実行\nnpm run test:e2e\n```\n\n**テスト構造：**\n```typescript\nimport { render, screen, fireEvent } from '@testing-library\u002Freact'\nimport { WorkspacePanel } from '.\u002FWorkspacePanel'\n\ndescribe('WorkspacePanel', () => {\n  it('renders workspace correctly', () => {\n    render(\u003CWorkspacePanel \u002F>)\n    expect(screen.getByRole('main')).toBeInTheDocument()\n  })\n\n  it('handles session creation', async () => {\n    render(\u003CWorkspacePanel \u002F>)\n    fireEvent.click(screen.getByText('New Session'))\n    expect(await screen.findByText('Session created')).toBeInTheDocument()\n  })\n})\n```\n\n---\n\n## デプロイメントワークフロー\n\n### デプロイ前チェックリスト\n\n- [ ] すべてのテストがローカルで成功\n- [ ] `npm run build` が成功（フロントエンド）\n- [ ] `poetry run pytest` が成功（バックエンド）\n- [ ] ハードコードされたシークレットなし\n- [ ] 環境変数がドキュメント化されている\n- [ ] データベースマイグレーションが準備されている\n\n### デプロイメントコマンド\n\n```bash\n# フロントエンドのビルドとデプロイ\ncd frontend && npm run build\ngcloud run deploy frontend --source .\n\n# バックエンドのビルドとデプロイ\ncd backend\ngcloud run deploy backend --source .\n```\n\n### 環境変数\n\n```bash\n# フロントエンド (.env.local)\nNEXT_PUBLIC_API_URL=https:\u002F\u002Fapi.example.com\nNEXT_PUBLIC_SUPABASE_URL=https:\u002F\u002Fxxx.supabase.co\nNEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...\n\n# バックエンド (.env)\nDATABASE_URL=postgresql:\u002F\u002F...\nANTHROPIC_API_KEY=sk-ant-...\nSUPABASE_URL=https:\u002F\u002Fxxx.supabase.co\nSUPABASE_KEY=eyJ...\n```\n\n---\n\n## 重要なルール\n\n1. **絵文字なし** - コード、コメント、ドキュメントに絵文字を使用しない\n2. **不変性** - オブジェクトや配列を変更しない\n3. **TDD** - 実装前にテストを書く\n4. **80%カバレッジ** - 最低基準\n5. **小さなファイル多数** - 通常200-400行、最大800行\n6. **console.log禁止** - 本番コードには使用しない\n7. **適切なエラー処理** - try\u002Fcatchを使用\n8. **入力検証** - Pydantic\u002FZodを使用\n\n---\n\n## 関連スキル\n\n- `coding-standards.md` - 一般的なコーディングベストプラクティス\n- `backend-patterns.md` - APIとデータベースパターン\n- `frontend-patterns.md` - ReactとNext.jsパターン\n- `tdd-workflow\u002F` - テスト駆動開発の方法論\n",{},"main","a318f48de3c5718e8ea2e9f6fae7790e8a759e85","upstream-sync\u002Fwork\u002Fecc\u002Fdocs\u002Fja-JP\u002Fskills\u002Fproject-guidelines-example",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":37,"prompt":47,"zipAvailable":48},[38,41,44],{"tool":39,"command":40},"npx","npx skills add oabdelmaksoud\u002FAgention --skill project-guidelines-example",{"tool":42,"command":43},"bunx","bunx skills add oabdelmaksoud\u002FAgention --skill project-guidelines-example",{"tool":45,"command":46},"pnpm","pnpm dlx skills add oabdelmaksoud\u002FAgention --skill project-guidelines-example","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fdocs\u002Fja-JP\u002Fskills\u002Fproject-guidelines-example\u002FSKILL.md",true,[],[51,75,89,122,148,168],{"skillNo":52,"name":53,"nameZh":6,"description":54,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":55,"categories":56,"keywords":62,"publishedAt":23},"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",[57],{"categoryNo":58,"categoryName":59,"taxonomyType":60,"taxonomyTypeDesc":61},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",[63,64,65,66,67,68,69,70,71,72,73,74],"translate","doc","visa doc translate","bilingual","with","english","application","PDF","translation","documents","create","images",{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":23},"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",[],[82,83,84,85,86,87,88],"verification","loop","verification loop","sessions","code","claude code sessions","system",{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":106,"publishedAt":23},"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",[95,98,101],{"categoryNo":96,"categoryName":97,"taxonomyType":60,"taxonomyTypeDesc":61},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":99,"categoryName":100,"taxonomyType":60,"taxonomyTypeDesc":61},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":102,"categoryName":103,"taxonomyType":104,"taxonomyTypeDesc":105},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[107,108,109,110,111,112,113,114,115,86,116,117,118,119,67,120,121],"workflow","tdd","tdd workflow","use","unit","coverage","refactoring","e2e","integration","development","e2e tests","tests","driven","test","writing",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":23},"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",[],[129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,67],"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":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":155,"publishedAt":23},"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",[154],{"categoryNo":96,"categoryName":97,"taxonomyType":60,"taxonomyTypeDesc":61},[156,157,158,159,86,160,161,162,163,88,164,165,166,167],"swift protocol di testing","protocol","swift","testing","protocols","file","network","injection","dependency","swift testing","dependency injection","mock",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":174,"publishedAt":23},"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",[],[175,176,177,158,178,27,179],"concurrency","swift concurrency","swift concurrency 6 2","default","types"]