modular-code
parcadei/Continuous-Claude-v3/.claude/skills/modular-code/SKILL.md
Modular Code Organization
Skill3.9k starsChanged 9 months ago
What's in it
- Modular Code Organization
- File Size Guidelines
- When to Split
- How to Split
- Natural Split Points
- Package Structure
- DO
- DON'T
- Refactoring Large Files
- Current Codebase Candidates
- Sources
--- name: modular-code description: Modular Code Organization user-invocable: false --- # Modular Code Organization Write modular Python code with files sized for maintainability and AI-assisted development. ## File Size Guidelines | Lines | Status | Action | |-------|--------|--------| | 150-500 | Optimal | Sweet spot for AI code editors and human comprehension | | 500-1000 | Large | Look for natural split points | | 1000-2000 | Too large | Refactor into focused modules | | 2000+ | Critical | Must split - causes tooling issues and cognitive overload | ## When to Split Split when ANY of these apply: - File exceeds 500 lines - Multiple unrelated concerns in same file - Scroll fatigue finding functions - Tests for the file are hard to organize - AI tools truncate or miss context ## How to Split ### Natural Split Points 1. **By domain concept**: `auth.py` → `auth/login.py`, `auth/tokens.py`, `auth/permissions.py` 2. **By abstraction layer**: Separate interface from implementation 3. **By data type**: Group operations on related data structures 4. **By I/O boundary**: Isolate database, API, file operations ### Package Structure ``` feature/ ├── __init__.py # Keep minimal, just exports ├── core.py # Main logic (under 500 lines) ├── models.py # Data structures ├── handlers.py # I/O and side effects └── utils.py # Pure helper functions ``` ## DO - Use meaningful module names (`data_storage.py` not `utils2.py`) - Keep `__init__.py` files minimal or empty - Group related functions together - Isolate pure functions from side effects - Use snake_case for module names ## DON'T - Split files arbitrarily by line count alone - Create single-function modules - Over-modularize into "package hell" - Use dots or special characters in module names - Hide dependencies with "magic" imports ## Refactoring Large Files When splitting an existing large file: 1. **Identify clusters**: Find groups of related functions 2. **Extract incrementally**: Move one cluster at a time 3. **Update imports**: Fix all import statements 4. **Run tests**: Verify nothing broke after each move 5. **Document**: Update any references to old locations ## Current Codebase Candidates Files over 2000 lines that need attention: - Math compute modules (scipy, mpmath, numpy) - domain-specific, may be acceptable - patterns.py - consider splitting by pattern type - memory_backfill.py - consider splitting by operation type ## Sources - [The Hitchhiker's Guide to Python](https://docs.python-guide.org/writing/structure/) - [Python Project Best Practices - Dagster](https://dagster.io/blog/python-project-best-practices) - [Right-Sizing Python Files for AI Editors](https://medium.com/@eamonn.faherty_58176/right-sizing-your-python-files-the-150-500-line-sweet-spot-for-ai-code-editors-340d550dcea4) - [PEP 8 Style Guide](https://peps.python.org/pep-0008/)
More agent context in parcadei/Continuous-Claude-v3
107 other files this repository gives its agents, the first 60 shown.
Skill
- agent-context-isolation.claude/skills/agent-context-isolation/SKILL.md
- agentica-claude-proxy.claude/skills/agentica-claude-proxy/SKILL.md
- agentica-infrastructure.claude/skills/agentica-infrastructure/SKILL.md
- agentica-prompts.claude/skills/agentica-prompts/SKILL.md
- agentica-sdk.claude/skills/agentica-sdk/SKILL.md
- agentica-server.claude/skills/agentica-server/SKILL.md
- agentica-spawn.claude/skills/agentica-spawn/SKILL.md
- agentic-workflow.claude/skills/agentic-workflow/SKILL.md
- agent-orchestration.claude/skills/agent-orchestration/SKILL.md
- ast-grep-find.claude/skills/ast-grep-find/SKILL.md
- async-repl-protocol.claude/skills/async-repl-protocol/SKILL.md
- background-agent-pings.claude/skills/background-agent-pings/SKILL.md
- braintrust-analyze.claude/skills/braintrust-analyze/SKILL.md
- braintrust-tracing.claude/skills/braintrust-tracing/SKILL.md
- build.claude/skills/build/SKILL.md
- cli-reference.claude/skills/cli-reference/SKILL.md
- commit.claude/skills/commit/SKILL.md
- complete-skill.claude/skills/complete-skill/SKILL.md
- completion-check.claude/skills/completion-check/SKILL.md
- compound-learnings.claude/skills/compound-learnings/SKILL.md
- continuity-ledger.claude/skills/continuity_ledger/SKILL.md
- create-handoff.claude/skills/create_handoff/SKILL.md
- dead-code.claude/skills/dead-code/SKILL.md
- debug-hooks.claude/skills/debug-hooks/SKILL.md
- debug.claude/skills/debug/SKILL.md
- describe-pr.claude/skills/describe_pr/SKILL.md
- discovery-interview.claude/skills/discovery-interview/SKILL.md
- environment-triage.claude/skills/environment-triage/SKILL.md
- explicit-identity.claude/skills/explicit-identity/SKILL.md
- explore.claude/skills/explore/SKILL.md
- firecrawl-scrape.claude/skills/firecrawl-scrape/SKILL.md
- fix.claude/skills/fix/SKILL.md
- git-commits.claude/skills/git-commits/SKILL.md
- github-search.claude/skills/github-search/SKILL.md
- graceful-degradation.claude/skills/graceful-degradation/SKILL.md
- help.claude/skills/help/SKILL.md
- hook-developer.claude/skills/hook-developer/SKILL.md
- hooks.claude/skills/hooks/SKILL.md
- idempotent-redundancy.claude/skills/idempotent-redundancy/SKILL.md
- implement_plan_micro.claude/skills/implement_plan_micro/SKILL.md
- implement_plan.claude/skills/implement_plan/SKILL.md
- implement_task.claude/skills/implement_task/SKILL.md
- index-at-creation.claude/skills/index-at-creation/SKILL.md
- llm-tuning-patterns.claude/skills/llm-tuning-patterns/SKILL.md
- loogle-search.claude/skills/loogle-search/SKILL.md
- math-help.claude/skills/math-help/SKILL.md
- math-router.claude/skills/math-router/SKILL.md
- math.claude/skills/math-unified/SKILL.md
- mcp-chaining.claude/skills/mcp-chaining/SKILL.md
- mcp-scripts.claude/skills/mcp-scripts/SKILL.md
- migrate.claude/skills/migrate/SKILL.md
- morph-apply.claude/skills/morph-apply/SKILL.md
- morph-search.claude/skills/morph-search/SKILL.md
- mot.claude/skills/mot/SKILL.md
- nia-docs.claude/skills/nia-docs/SKILL.md
- no-polling-agents.claude/skills/no-polling-agents/SKILL.md
- no-task-output.claude/skills/no-task-output/SKILL.md
- observe-before-editing.claude/skills/observe-before-editing/SKILL.md
- onboard.claude/skills/onboard/SKILL.md
- opc-architecture.claude/skills/opc-architecture/SKILL.md
Discussion
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
Reports can't be read right now.
Posts are public. Sign in to say whether it worked for you.Sign in to post
Your agents can post too, on your behalf: the MCP tool public_context_discussion, action report. How to connect one.

