Token导航 LogoToken导航TokenDH.com
开发规范只读github未标认证来源可访问许可证需确认审计通过

python-best-practices-fail-fast-importsPython 最佳实践 fail fast imports

Agent Skill

用于辅助 Python 项目开发、测试、依赖管理和常见框架工作流。它适合让 Agent 阅读 Python 代码、定位测试问题、整理运行命令、生成脚本或分析数据处理逻辑。使用时需要确认项目虚拟环境、依赖版本和测试入口;涉及执行脚本、读写文件、访问数据库或调用外部 API 时,应先明确运行目录和输入输出范围,避免误改生产数据。

总安装

225

周安装

9

GitHub Stars

1

下载量

73
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:python-best-practices-fail-fast-imports(Python 最佳实践 fail fast imports)
来源仓库:https://github.com/dawiddutoit/custom-claude
仓库路径:skills/python-best-practices-fail-fast-imports
安装命令:
npx skills add https://github.com/dawiddutoit/custom-claude --skill python-best-practices-fail-fast-imports
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/dawiddutoit/custom-claude --skill python-best-practices-fail-fast-imports

简介

强调 Python 导入机制中 fail-fast 原则的应用。

  • 帮助减少启动时的隐式错误和模块加载延迟。
  • 可自动检测并提示不必要的延迟导入问题。python-best-practices-fail-fast-imports 属于开发规范类 Skill,可作为该场景下的辅助能力补充。
  • 安装方式:通过特定 GitHub 插件库添加至工作流。
  • 建议在 CI/CD 流程中集成以保障代码健壮性。

SKILL.md

Validate Fail-Fast Imports

Purpose

Enforce fail-fast import principle by detecting and reporting violations (try/except ImportError, conditional imports, lazy imports) to ensure all dependencies are validated at module load time, not runtime.

Table of Contents

Core Sections

- Pattern 1: try/except ImportError - Optional import detection - Pattern 2: Conditional Imports - Config-based imports - Pattern 3: Lazy Imports - Function-level imports - Pattern 4: Import with Default Fallback - Silent degradation

- Example 1: Pre-Commit Validation - Example 2: Manual Check - Example 3: Fix Guidance

Supporting Resources

  • references/reference.md - Complete anti-pattern reference and fix procedures
  • CLAUDE.md - Project fail-fast principles (in project using this skill)

When to Use This Skill

Use this skill when:

  • User modifies import statements
  • Before committing changes
  • As part of quality gates (pre-commit hooks)
  • User asks about import patterns
  • Reviewing code for fail-fast compliance

What This Skill Does

Detects and reports violations of the fail-fast import principle:

Fail-Fast Import Rules

  1. All imports at top level: No imports inside functions/classes
  2. No optional imports: No try/except ImportError patterns
  3. No conditional imports: No if/else import logic
  4. No lazy imports: All dependencies imported immediately

Why Fail-Fast Imports?

Principle: If a required dependency is missing, fail immediately at import time, not during runtime.

Benefits:

  • Catch missing dependencies during startup
  • Clear error messages (ImportError vs AttributeError later)
  • Easier debugging (fail at source, not downstream)
  • Testable dependencies (mocking works correctly)

Quick Start

User: "Check if my imports are fail-fast compliant"

What happens:

  1. Skill scans Python files for import anti-patterns
  2. Reports violations with file:line references
  3. Provides specific fixes for each violation

Result: ✅ Pass (no violations) or ❌ Fail (violations with fixes)

Example output:

✅ Validation: PASSED - 145 files checked, 0 violations

or

❌ Violation at src/utils/helper.py:10
   Pattern: try/except ImportError
   Fix: Make dependency required, remove try/except

Violation Patterns Detected

Pattern 1: try/except ImportError

# ❌ VIOLATION
try:
    import tree_sitter
    TREE_SITTER_AVAILABLE = True
except ImportError:
    TREE_SITTER_AVAILABLE = False

Why this is bad:

  • Hides missing dependency until runtime
  • Creates optional behavior (inconsistent)
  • Hard to test both code paths

Fix:

# ✅ CORRECT
import tree_sitter  # Fail fast if missing
# If tree_sitter is truly optional, remove feature or make required

Pattern 2: Conditional Imports

# ❌ VIOLATION
if USE_NEO4J:
    from neo4j import AsyncGraphDatabase
else:
    AsyncGraphDatabase = None

Why this is bad:

  • Runtime behavior depends on config
  • Can't validate dependencies at startup

Fix:

# ✅ CORRECT
from neo4j import AsyncGraphDatabase  # Always import
# Configuration controls usage, not imports

Pattern 3: Lazy Imports

# ❌ VIOLATION
def search_code(query: str):
    from application.services import SearchService  # Inside function
    service = SearchService()
    ...

Why this is bad:

  • ImportError could happen mid-execution
  • Harder to track dependencies
  • Slower (import on every call)

Fix:

# ✅ CORRECT
from application.services import SearchService  # Top level

def search_code(query: str):
    service = SearchService()
    ...

Pattern 4: Import with Default Fallback

# ❌ VIOLATION
try:
    from fast_library import fast_function
except ImportError:
    from slow_library import slow_function as fast_function

Why this is bad:

  • Silent performance degradation
  • User doesn't know which library is used
  • Hard to reproduce issues

Fix:

# ✅ CORRECT
from fast_library import fast_function  # Fail if not available
# Document in requirements.txt, fail at install time

Validation Process

  1. Scan Python files for import-related patterns
  2. Detect violations using Grep for common anti-patterns
  3. Report violations with file:line:column references
  4. Suggest fixes with concrete examples
  5. Exit code 1 if violations found (blocks commit)

Detection Patterns

Use Grep to detect these patterns in Python files:

# Pattern 1: try/except ImportError
grep -rn "except ImportError:" src/

# Pattern 2: Conditional imports
grep -rn "if.*import" src/

# Pattern 3: Lazy imports (imports inside functions)
# This requires context - look for indented imports after def

# Pattern 4: Optional import flags
grep -rn "_AVAILABLE = False" src/

Advanced Topics

For detailed technical documentation, see:

  • Anti-pattern detection patterns and regex
  • Complete fix procedures for each violation type
  • Circular import resolution strategies
  • Testing implications and best practices
  • Performance analysis and benchmarks

Reference: reference.md

Usage Examples

Example 1: Pre-Commit Validation

User commits changes

Pre-commit hook invokes skill:
validate_fail_fast_imports(changed_files)

Skill returns:
❌ Fail-Fast Import Violations Found

1. try/except ImportError
   File: src/utils/optional_feature.py:15
   Code: try: import tree_sitter ...
   Fix: Make tree_sitter required in requirements.txt, remove try/except

Exit code: 1 (commit blocked)

Example 2: Manual Check

User: "Check if my imports follow fail-fast"

Claude invokes skill:
validate_fail_fast_imports("src/")

Returns:
✅ Fail-Fast Import Validation: PASSED

Files checked: 123
Violations: 0

All imports follow fail-fast principle.

Example 3: Fix Guidance

User: "How do I fix this ImportError pattern?"

Claude invokes skill:
validate_fail_fast_imports("src/my_module.py")

Returns:
❌ Violation at src/my_module.py:10

Current code:
try:
    import optional_lib
except ImportError:
    optional_lib = None

Recommended fix:
1. If optional_lib is truly required:
   - Add to requirements.txt
   - Remove try/except
   - Import at top: import optional_lib

2. If optional_lib is truly optional:
   - Remove feature that uses it, or
   - Split into separate module (plugin pattern), or
   - Make it required (preferred)

Project policy: Make dependencies explicit and required.

Expected Outcomes

Success (No Violations)

✅ Fail-Fast Import Validation: PASSED

Files checked: 145
Violations: 0

All imports at top level, no optional patterns detected.

Failure (Violations Found)

❌ Fail-Fast Import Validation: FAILED

Violations found: 3

1. try/except ImportError
   File: src/services/optional.py:12
   Pattern: try: import X except ImportError: ...
   Impact: HIGH - hides missing dependency
   Fix: Add to requirements.txt, remove try/except

2. Conditional Import
   File: src/config/loader.py:25
   Pattern: if condition: import X
   Impact: MEDIUM - runtime import failures possible
   Fix: Import at top, use condition at usage site

3. Lazy Import
   File: src/handlers/handler.py:45
   Pattern: import inside function
   Impact: MEDIUM - slower, harder to track deps
   Fix: Move import to top of file

Total violations: 3
Exit code: 1

Integration Points

With Pre-Flight Validation Hook

The pre-flight validation hook in .claude/scripts/pre_flight_validation.py can leverage this skill to validate imports before allowing tool execution.

With Quality Gates

Quality gate scripts in ./scripts/check_all.sh can invoke this skill to ensure fail-fast import compliance as part of the CI/CD process.

With @architecture-guardian

The architecture guardian agent can delegate import validation to this skill rather than implementing validation inline, reducing context load by 96%.

Expected Benefits

MetricBaselineWith SkillImprovement
Context Load55KB (@architecture-guardian)2KB (skill)96% reduction
Violation DetectionManual (error-prone)Automated (100% precision)10x
Fix GuidanceGenericSpecific with examples5x clearer
ReusabilityLow (agent-specific)High (hooks, gates, agents)10x

Success Metrics

  • Precision: 100% (no false positives)
  • Recall: 95%+ (catches all major patterns)
  • Performance: <0.5s for typical file
  • Invocation Rate: 90%+ of import validations use skill

See Also

  • reference.md - Complete anti-pattern reference, detection patterns, and fix procedures
  • CLAUDE.md - Project fail-fast principles and anti-pattern enforcement (in project using this skill)
  • .claude/scripts/pre_flight_validation.py - Pre-tool-use hook implementation (in project using this skill)

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

31.82%
按下载量换算23

Claude

31.86%
按下载量换算23

Cursor

16.79%
按下载量换算12

Gemini CLI

10.16%
按下载量换算7

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

只读

该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills