Help us improve
Share bugs, ideas, or general feedback.
From light
Guides writing and reviewing backend code with emphasis on clarity, security, reproducibility, and maintainability. Covers dependency management (uv/Poetry), testing (pytest), linting (Ruff), CI (GitHub Actions), and systematic debugging.
npx claudepluginhub light0305/light-skillsHow this skill is triggered — by the user, by Claude, or both
Slash command
/light:light-backend-codingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
读现有代码,匹配项目的风格、约定与依赖库,不擅自引入新框架(CONVENTIONS)。明确输入输出、边界条件、复现要求(种子/版本)。
assets/project-scaffold/CODE_REVIEW_CHECKLIST.mdassets/project-scaffold/README.mdassets/project-scaffold/pyproject.tomlassets/project-scaffold/scripts/boundary_trace.pyassets/project-scaffold/scripts/debug_instrument.shassets/project-scaffold/src/example/__init__.pyassets/project-scaffold/src/example/stats.pyassets/project-scaffold/tests/conftest.pyassets/project-scaffold/tests/test_stats.pyreferences.mdreferences/asset_manifest_governance.mdreferences/debug_protocol.mdreferences/light_skill_pack_maintenance.mdreferences/skill_selftest_ci.mdreferences/tdd_redflags.mdEnforces quality and security in all AI-generated code: verifies packages, blocks insecure patterns, eliminates placeholders, ensures runnable and readable output.
Implements backend services, APIs, and data models from architectural designs and API contracts, including tests and database queries.
Guides backend tasks like REST/GraphQL API design, database query optimization, authentication, microservices building, code review, migrations, and load testing across detected stacks.
Share bugs, ideas, or general feedback.
读现有代码,匹配项目的风格、约定与依赖库,不擅自引入新框架(CONVENTIONS)。明确输入输出、边界条件、复现要求(种子/版本)。
uv init → uv add <pkg> → uv lock/uv sync(按 uv.lock 精确复现) → uv run;uv python pin 3.11 锁 Python 版本。poetry add → poetry install(按 poetry.lock);依赖放 PEP 621 [project.dependencies],dev 依赖入 [tool.poetry.group.dev];CI 固定 Poetry 版本。uv sync/poetry install 还原确定性环境。test_*.py、函数 test_* 自动发现,纯 assert;@pytest.fixture(scope function/module/session) 做依赖注入,@pytest.mark.parametrize 跑多组输入,共享 fixture 放 conftest.py。新功能/修 bug 先配测试,改完跑 pytest -x 验证。覆盖率 pytest --cov=pkg --cov-report=term-missing,CI 出 --cov-report=xml。[tool.ruff.lint] 用 select/extend-select(如加 B)/ignore(如 E501);[tool.ruff] 设 line-length/target-version;CI 分别跑 ruff check . 与 ruff format --check .(linter 与 formatter 是两个命令)。.pre-commit-config.yaml 的 repos 用 rev 锁版本(tag/SHA,勿用浮动分支);接 astral-sh/ruff-pre-commit 的 ruff(args:[--fix])+ruff-format;pre-commit install 启用,CI 跑 pre-commit run --all-files。sonar-project.properties 设 sonar.sources/sonar.tests/sonar.python.coverage.reportPaths=coverage.xml;Quality Gate 卡阈值;token 走 secrets。.github/workflows/*.yml;actions/checkout@v6 + actions/setup-python@v6(cache:"pip",缓存默认关须显式开);strategy.matrix.python-version 多版本并行;典型流水线 checkout → 装依赖 → ruff check → pytest;secrets 用 ${{ secrets.X }} 注入。WHATS_INCLUDED.md / 资产索引 / manifest 这类人工清单时,新增脚本或模板不能只更新文件本身;要加 CI 校验防漏登。校验器应解析清单中的 canonical 区段/表格,按精确键(如 (skill_slug, script_name))检查缺失、重复、陈旧项;不要用全文件 basename 字符串匹配,否则模板区的顺手提及或同名脚本会造成假通过。检测入口也要用 AST/结构化方式(如真实 if __name__ == "__main__"),不要只搜 __main__ 字符串。补齐覆盖后及时把“缺 selftest warning”升级为 hard gate,防止后续回退。--selftest/兼容别名,保持原 CLI 行为不破坏;自测必须离线、用合成数据或 TemporaryDirectory,包含真实断言,并清理生成物。对可选依赖(如外部二进制、网络服务、重型解释库)采用“可用则验证、不可用则断言降级路径”的策略,不把缺环境当作失败。git branch -d 会失败);丢弃工作需显式确认,无请求不 force-push。创建网络暴露的接口/服务时,若无鉴权必须主动指出安全影响(security_awareness),不静默上线无认证服务。
可运行代码 + 测试 + 依赖/环境说明 + README + 运行命令。结构交 a06 规整。作 a03 实验代码阶段时的标准交接工件:run_manifest.md(记录运行命令/环境/产物路径/关键指标,交 m06;命名见 CONVENTIONS §6.1)。
起步可直接复制同目录 assets/project-scaffold/(含 pyproject.toml/.pre-commit-config.yaml/CI/示例模块+测试 + CODE_REVIEW_CHECKLIST.md + scripts/(边界调试埋点),版本号已实测、pytest 实跑通过)。
推荐 TDD(test-driven-development):先写最小失败测试并亲眼看它失败(确认是功能缺失而非拼写错)→ 写最简实现转绿 → 绿灯后才重构;无失败测试不写生产代码。
代码取向对照(最小够用 vs 过度工程;源头校验 vs 症状补丁):
# Bad:过度工程——测试只要求重试 3 次,却预先堆了一堆没人用的旋钮(YAGNI)
def retry(fn, max_retries=3, backoff="exponential", on_retry=None, jitter=True): ...
# Good:刚好让当前测试通过,需求长出来再加参数
def retry(fn, attempts=3):
for i in range(attempts):
try:
return fn()
except Exception:
if i == attempts - 1:
raise
# Bad:症状处补丁——坏值已传到下游,每个用到的地方各打一个补丁
def report(scores):
scores = [0 if s != s else s for s in scores] # 这里擦 NaN
...
# 别处又得再擦一次,根因(产生 NaN 的源头)没动,补丁会越长越多
# Good:在数据进入系统的源头校验/修复一次,下游干净(systematic-debugging Phase 1.5)
def load_scores(raw):
scores = parse(raw)
if any(s != s for s in scores): # 源头发现即拒绝
raise ValueError("输入含 NaN,拒绝在源头")
return scores
实现 m05 方案与 m02 流水线;优先复用 db03 方法卡的 implementation_repo(已验证的官方实现/库,如 HuggingFace Transformers、scikit-learn、xgboost/lightgbm、diffusers)而非从零造轮子;产出供 m06 分析;代码版本登记 db09;系统级设计交 a04。
工具硬信息(真实端点/参数/配置/工作流)见同目录 references.md。
深用专题:TDD 红旗与合理化反驳表见 references/tdd_redflags.md;系统化调试四阶段+边界埋点见 references/debug_protocol.md(配套可跑模板 assets/project-scaffold/scripts/debug_instrument.sh 与 boundary_trace.py);自审清单 assets/project-scaffold/CODE_REVIEW_CHECKLIST.md。
资产清单/manifest 防漂移校验模式见 references/asset_manifest_governance.md;技能脚本 --selftest 与 CI 实际执行门模式见 references/skill_selftest_ci.md;维护 Light 技能包时的断点恢复、质量门、入口文档防漂移与提交纪律见 references/light_skill_pack_maintenance.md。