affaan-m/ECC

project-guidelines-example

Project-specific skill template covering architecture, patterns, testing, and deployment guidance.

76CollectingNetwork accessRuns scripts
See how to use itView GitHub source
npx skills add https://github.com/affaan-m/ECC --skill "docs/zh-TW/skills/project-guidelines-example"
Automated source guide

Source checked Jul 28, 2026·Refresh due Oct 26, 2026

Reorganized from the pinned upstream SKILL.md

Turn project-guidelines-example's source instructions into a guide you can follow

According to the pinned SKILL.md from affaan-m/ECC: 這是專案特定技能的範例。使用此作為你自己專案的範本。

npx skills add https://github.com/affaan-m/ECC --skill "docs/zh-TW/skills/project-guidelines-example"
Check the pinned source

Best fit

  • Project-specific skill template covering architecture, patterns, testing, and deployment guidance.

Bring this context

  • A concrete task that matches the documented purpose of project-guidelines-example.
  • The files, examples, or context the task depends on.
  • Your constraints, target environment, and definition of done.

Expected outputs

  • A result that follows the pinned project-guidelines-example instructions.
  • A concise record of assumptions, inputs used, and unresolved questions.
  • A final check against the source workflow and relevant permission signals.

Key source sections

Read project-guidelines-example through these 5 source sections

Sections are extracted automatically from the pinned SKILL.md and link back to the source.

01

何時使用

在處理專案特定設計時參考此技能。專案技能包含: - 架構概覽 - 檔案結構 - 程式碼模式 - 測試要求 - 部署工作流程

SKILL.md · 何時使用
架構概覽檔案結構程式碼模式
02

架構概覽

技術堆疊: - 前端:Next.js 15(App Router)、TypeScript、React - 後端:FastAPI(Python)、Pydantic 模型 - 資料庫:Supabase(PostgreSQL) - AI:Claude API 帶工具呼叫和結構化輸出 - 部署:Google Cloud Run - 測試:Playwright(E2E)、pytest(後端)、React Testing Library

SKILL.md · 架構概覽
前端:Next.js 15(App Router)、TypeScript、React後端:FastAPI(Python)、Pydantic 模型資料庫:Supabase(PostgreSQL)
03

檔案結構

Review the “檔案結構” section in the pinned source before continuing.

SKILL.md · 檔案結構
Review and apply the “檔案結構” source section.
04

程式碼模式

Review the “程式碼模式” section in the pinned source before continuing.

SKILL.md · 程式碼模式
Review and apply the “程式碼模式” source section.
05

API 回應格式(FastAPI)

Review the “API 回應格式(FastAPI)” section in the pinned source before continuing.

SKILL.md · API 回應格式(FastAPI)
Review and apply the “API 回應格式(FastAPI)” source section.

SkillSignal prompt templates

Provide the task, context, and acceptance criteria

These prompts were written by SkillSignal from the source structure; they are not upstream text.

Task-start prompt

Confirm source fit, inputs, and outputs before acting.

Use project-guidelines-example to help me with: [specific task]. Context: [files, data, or background]. Constraints: [environment, scope, and prohibited actions]. Before acting, check the pinned SKILL.md and explain which sections apply, what inputs are still missing, and what you will deliver.

Source-guided execution

Make the Agent explicitly follow the key extracted sections.

Apply the pinned project-guidelines-example source to [task]. Pay particular attention to these source sections: “何時使用”, “架構概覽”, “檔案結構”, “程式碼模式”, “API 回應格式(FastAPI)”. Preserve the important decision at each step. Mark facts not covered by the source as “needs confirmation” instead of inventing them. Then verify the result against my acceptance criteria: [criteria].

Result-review prompt

Check omissions, permissions, and source drift before delivery.

Review the current project-guidelines-example result: (1) does it satisfy the original task; (2) were any applicable steps or limits in the pinned SKILL.md missed; (3) did it perform any unauthorized file, command, network, or data action; and (4) which conclusions remain unverified? List issues first, then fix only what the source or user authorization supports.

Output checklist

Verify each item before delivery

The task matches the purpose documented in the SKILL.md.

The source section “何時使用” has been checked.

The source section “架構概覽” has been checked.

The source section “檔案結構” has been checked.

The source section “程式碼模式” has been checked.

Inputs, constraints, and acceptance criteria are explicit.

Unverified facts, compatibility, and outcome claims are clearly marked.

Any file, command, network, or data action has been reviewed.

Choose a different workflow

When another Skill is the better fit

FAQ

What does project-guidelines-example do?

這是專案特定技能的範例。使用此作為你自己專案的範本。

How do I start using project-guidelines-example?

The catalog detected this source-specific install command: npx skills add https://github.com/affaan-m/ECC --skill "docs/zh-TW/skills/project-guidelines-example". Inspect the command and pinned source before running it.

Which Agent platforms does it declare?

No dedicated Agent platform is declared in the pinned source record.

Repository stars
234,327
Repository forks
35,711
Quality
76/100
Source repository last pushed

Quality breakdown

Based on traceable docs and repository signals; stars are not treated as quality.

76/100
Documentation27/30
Specificity18/25
Maintenance20/20
Trust signals11/25

Compare before choosing

Related Agent Skills and source variants

These links are selected from shared tasks, functions, stacks, platforms, and same-name variants. Compare the source owner, documentation, permissions, and maintenance signals.

project-guidelines-example by affaan-m

Project-specific skill template covering architecture, patterns, testing, and deployment guidance.

simpy by k-dense-ai

Build, inspect, test, and analyze bounded process-based discrete-event simulations with SimPy, including events, resources, interrupts, monitoring, replications, warm-up, and reproducible output analysis.

flowstudio-power-automate-build by github

Build, scaffold, and deploy Power Automate cloud flows using the FlowStudio MCP server. Your agent constructs flow definitions, wires connections, deploys, and tests — all via MCP without opening the portal. Load this skill when asked to: create a flow, build a new flow, deploy a flow definition, scaffold a Power Automate workflow, construct a flow JSON, update an existing flow's actions, patch a flow definition, add actions to a flow, wire up connections, or generate a workflow definition from

python-pypi-package-builder by github

End-to-end skill for building, testing, linting, versioning, and publishing a production-grade Python library to PyPI. Covers all four build backends (setuptools+setuptools_scm, hatchling, flit, poetry), PEP 440 versioning, semantic versioning, dynamic git-tag versioning, OOP/SOLID design, type hints (PEP 484/526/544/561), Trusted Publishing (OIDC), and the full PyPA packaging flow. Use for: creating Python packages, pip-installable SDKs, CLI tools, framework plugins, pyproject.toml setup, py.ty

django-verification by affaan-m

Verification loop for Django projects: migrations, linting, tests with coverage, security scans, and deployment readiness checks before release or PR.

View original Skill.mdThis page is parsed directly from the repository SKILL.md without editorial rewriting. Collected: Jul 28, 2026 · about 1 min

專案指南技能(範例)

這是專案特定技能的範例。使用此作為你自己專案的範本。

基於真實生產應用程式:Zenith - AI 驅動的客戶探索平台。


何時使用

在處理專案特定設計時參考此技能。專案技能包含:

  • 架構概覽
  • 檔案結構
  • 程式碼模式
  • 測試要求
  • 部署工作流程

架構概覽

技術堆疊:

  • 前端:Next.js 15(App Router)、TypeScript、React
  • 後端:FastAPI(Python)、Pydantic 模型
  • 資料庫:Supabase(PostgreSQL)
  • AI:Claude API 帶工具呼叫和結構化輸出
  • 部署:Google Cloud Run
  • 測試:Playwright(E2E)、pytest(後端)、React Testing Library

服務:

┌─────────────────────────────────────────────────────────────┐
│                         前端                                 │
│  Next.js 15 + TypeScript + TailwindCSS                     │
│  部署:Vercel / Cloud Run                                   │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                         後端                                 │
│  FastAPI + Python 3.11 + Pydantic                          │
│  部署:Cloud Run                                            │
└─────────────────────────────────────────────────────────────┘
                              │
              ┌───────────────┼───────────────┐
              ▼               ▼               ▼
        ┌──────────┐   ┌──────────┐   ┌──────────┐
        │ Supabase │   │  Claude  │   │  Redis   │
        │ Database │   │   API    │   │  Cache   │
        └──────────┘   └──────────┘   └──────────┘

檔案結構

project/
├── frontend/
│   └── src/
│       ├── app/              # Next.js app router 頁面
│       │   ├── api/          # API 路由
│       │   ├── (auth)/       # 需認證路由
│       │   └── workspace/    # 主應用程式工作區
│       ├── components/       # React 元件
│       │   ├── ui/           # 基礎 UI 元件
│       │   ├── forms/        # 表單元件
│       │   └── layouts/      # 版面配置元件
│       ├── hooks/            # 自訂 React hooks
│       ├── lib/              # 工具
│       ├── types/            # TypeScript 定義
│       └── config/           # 設定
│
├── backend/
│   ├── routers/              # FastAPI 路由處理器
│   ├── models.py             # Pydantic 模型
│   ├── main.py               # FastAPI app 進入點
│   ├── auth_system.py        # 認證
│   ├── database.py           # 資料庫操作
│   ├── services/             # 業務邏輯
│   └── tests/                # pytest 測試
│
├── deploy/                   # 部署設定
├── docs/                     # 文件
└── scripts/                  # 工具腳本

程式碼模式

API 回應格式(FastAPI)

from pydantic import BaseModel
from typing import Generic, TypeVar, Optional

T = TypeVar('T')

class ApiResponse(BaseModel, Generic[T]):
    success: bool
    data: Optional[T] = None
    error: Optional[str] = None

    @classmethod
    def ok(cls, data: T) -> "ApiResponse[T]":
        return cls(success=True, data=data)

    @classmethod
    def fail(cls, error: str) -> "ApiResponse[T]":
        return cls(success=False, error=error)

前端 API 呼叫(TypeScript)

interface ApiResponse<T> {
  success: boolean
  data?: T
  error?: string
}

async function fetchApi<T>(
  endpoint: string,
  options?: RequestInit
): Promise<ApiResponse<T>> {
  try {
    const response = await fetch(`/api${endpoint}`, {
      ...options,
      headers: {
        'Content-Type': 'application/json',
        ...options?.headers,
      },
    })

    if (!response.ok) {
      return { success: false, error: `HTTP ${response.status}` }
    }

    return await response.json()
  } catch (error) {
    return { success: false, error: String(error) }
  }
}

Claude AI 整合(結構化輸出)

from anthropic import Anthropic
from pydantic import BaseModel

class AnalysisResult(BaseModel):
    summary: str
    key_points: list[str]
    confidence: float

async def analyze_with_claude(content: str) -> AnalysisResult:
    client = Anthropic()

    response = client.messages.create(
        model="claude-sonnet-4-5-20250514",
        max_tokens=1024,
        messages=[{"role": "user", "content": content}],
        tools=[{
            "name": "provide_analysis",
            "description": "Provide structured analysis",
            "input_schema": AnalysisResult.model_json_schema()
        }],
        tool_choice={"type": "tool", "name": "provide_analysis"}
    )

    # 提取工具使用結果
    tool_use = next(
        block for block in response.content
        if block.type == "tool_use"
    )

    return AnalysisResult(**tool_use.input)

自訂 Hooks(React)

import { useState, useCallback } from 'react'

interface UseApiState<T> {
  data: T | null
  loading: boolean
  error: string | null
}

export function useApi<T>(
  fetchFn: () => Promise<ApiResponse<T>>
) {
  const [state, setState] = useState<UseApiState<T>>({
    data: null,
    loading: false,
    error: null,
  })

  const execute = useCallback(async () => {
    setState(prev => ({ ...prev, loading: true, error: null }))

    const result = await fetchFn()

    if (result.success) {
      setState({ data: result.data!, loading: false, error: null })
    } else {
      setState({ data: null, loading: false, error: result.error! })
    }
  }, [fetchFn])

  return { ...state, execute }
}

測試要求

後端(pytest)

# 執行所有測試
poetry run pytest tests/

# 執行帶覆蓋率的測試
poetry run pytest tests/ --cov=. --cov-report=html

# 執行特定測試檔案
poetry run pytest tests/test_auth.py -v

測試結構:

import pytest
from httpx import AsyncClient
from main import app

@pytest.fixture
async def client():
    async with AsyncClient(app=app, base_url="http://test") as ac:
        yield ac

@pytest.mark.asyncio
async def test_health_check(client: AsyncClient):
    response = await client.get("/health")
    assert response.status_code == 200
    assert response.json()["status"] == "healthy"

前端(React Testing Library)

# 執行測試
npm run test

# 執行帶覆蓋率的測試
npm run test -- --coverage

# 執行 E2E 測試
npm run test:e2e

測試結構:

import { render, screen, fireEvent } from '@testing-library/react'
import { WorkspacePanel } from './WorkspacePanel'

describe('WorkspacePanel', () => {
  it('renders workspace correctly', () => {
    render(<WorkspacePanel />)
    expect(screen.getByRole('main')).toBeInTheDocument()
  })

  it('handles session creation', async () => {
    render(<WorkspacePanel />)
    fireEvent.click(screen.getByText('New Session'))
    expect(await screen.findByText('Session created')).toBeInTheDocument()
  })
})

部署工作流程

部署前檢查清單

  • 本機所有測試通過
  • npm run build 成功(前端)
  • poetry run pytest 通過(後端)
  • 無寫死密鑰
  • 環境變數已記錄
  • 資料庫 migrations 準備就緒

部署指令

# 建置和部署前端
cd frontend && npm run build
gcloud run deploy frontend --source .

# 建置和部署後端
cd backend
gcloud run deploy backend --source .

環境變數

# 前端(.env.local)
NEXT_PUBLIC_API_URL=https://api.example.com
NEXT_PUBLIC_SUPABASE_URL=https://xxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...

# 後端(.env)
DATABASE_URL=postgresql://...
ANTHROPIC_API_KEY=sk-ant-...
SUPABASE_URL=https://xxx.supabase.co
SUPABASE_KEY=eyJ...

關鍵規則

  1. 無表情符號 在程式碼、註解或文件中
  2. 不可變性 - 永遠不要突變物件或陣列
  3. TDD - 實作前先寫測試
  4. 80% 覆蓋率 最低
  5. 多個小檔案 - 200-400 行典型,最多 800 行
  6. 無 console.log 在生產程式碼中
  7. 適當錯誤處理 使用 try/catch
  8. 輸入驗證 使用 Pydantic/Zod

相關技能

  • coding-standards.md - 一般程式碼最佳實務
  • backend-patterns.md - API 和資料庫模式
  • frontend-patterns.md - React 和 Next.js 模式
  • tdd-workflow/ - 測試驅動開發方法論
Source repo
affaan-m/ECC
Skill path
docs/zh-TW/skills/project-guidelines-example/SKILL.md
Commit SHA
4e973d3eaf92
Repository license
MIT
Data collected