agentic-ai-coding-standard
kumaran-is/claude-code-onboarding/.claude/skills/agentic-ai-coding-standard/SKILL.md
This skill provides coding standards for Python agentic AI services with LangChain/LangGraph. Use when reviewing or writing Python agentic AI code. Covers state management, tool definitions, graph structure, error handling, and observability.
Skill35 starsChanged 4 months ago
What's in it
- Agentic AI Coding Standards
- Key Rules
- Import Ordering
- Naming Conventions
- File Structure
- Reference
- Error Handling
Tools it asks for
- Read
--- name: agentic-ai-coding-standard description: "This skill provides coding standards for Python agentic AI services with LangChain/LangGraph. Use when reviewing or writing Python agentic AI code. Covers state management, tool definitions, graph structure, error handling, and observability." allowed-tools: Read metadata: triggers: LangChain, LangGraph, agentic AI, Python AI agent, FastAPI agent, state management, tool functions, guardrails, AI agent coding standard related-skills: agentic-ai-dev, code-reviewer, security-reviewer domain: backend role: specialist scope: review output-format: report last-reviewed: "2026-03-15" --- **Iron Law:** Always consult the agentic-ai-dev skill and its MCP sources before writing agent code; never generate LangGraph/LangChain patterns from memory. # Agentic AI Coding Standards Mandatory coding standards for all Python agentic AI services using LangChain, LangGraph, and FastAPI. ## Key Rules | # | Rule | Standard | |---|------|----------| | 1 | State typing | Always `TypedDict`; never `dict[str, Any]` | | 2 | Message lists | `Annotated[list[BaseMessage], add_messages]` | | 3 | Loop protection | `iteration_count` in state + max check in routing function | | 4 | Tool functions | `@tool` + docstring + try/except + return strings | | 5 | LLM instantiation | Factory function; never inline `ChatAnthropic()` in nodes | | 6 | Temperature | `0` for factual; `0.7` only for creative tasks | | 7 | Checkpointing | `PostgresSaver` in production; `MemorySaver` only in tests | | 8 | Error handling | Log + return error state; never swallow exceptions | | 9 | Naming | `build_<name>_agent()`, `<verb>_node()`, `<Name>State` | | 10 | Config | pydantic-settings with fail-fast; no `os.getenv()` with silent defaults | | 11 | Type hints | `mypy --strict`; `Literal` for routing return types | | 12 | Async | `async def` for all I/O; `ainvoke`/`astream` in API routes | | 13 | Logging | structlog with `agent_name`, `thread_id`, `node_name` context | | 14 | Secrets | Never log API keys; redact PII before logging | | 15 | Testing | Basic invoke + tool usage + iteration limit + error recovery | | 16 | Cost | Track tokens; configure budget caps; use cheapest viable model | | 17 | Imports | Group: stdlib → third-party → langchain/langgraph → local | ## Import Ordering ```python # 1. Standard library from __future__ import annotations import json from typing import Annotated, Literal # 2. Third-party from fastapi import APIRouter, Depends from pydantic import BaseModel, Field # 3. LangChain / LangGraph from langchain_core.messages import AIMessage, BaseMessage, HumanMessage from langchain_core.tools import tool from langgraph.graph import END, StateGraph from langgraph.graph.message import add_messages # 4. Local from ..core.config import settings from ..core.logging import get_logger ``` ## Naming Conventions | Element | Pattern | Example | |---------|---------|---------| | State | `<Name>State` | `AgentState`, `RAGState`, `MultiAgentState` | | Graph builder | `build_<name>_agent()` | `build_react_agent()`, `build_rag_agent()` | | Node function | `<verb>_node()` | `agent_node()`, `retrieve_node()`, `grade_node()` | | Tool function | `<verb>_<noun>()` | `search_web()`, `query_database()`, `calculate_cost()` | | Provider factory | `LLMProviderFactory` | Singleton, injected via `Depends()` | | Config | `Settings` | pydantic-settings, singleton `settings` instance | | Exception | `<Name>Error` | `AgentError`, `ToolError`, `LLMProviderError` | ## File Structure ``` src/<service>/ ├── agents/ │ ├── graphs/ # build_*_agent() functions │ ├── nodes/ # *_node() functions │ ├── tools/ # @tool functions │ └── state.py # TypedDict state schemas ├── rag/ # RAG-specific code ├── memory/ # Checkpointing + semantic memory ├── guardrails/ # Input/output validation ├── llm/providers.py # LLM factory ├── core/ │ ├── config.py # pydantic-settings │ ├── logging.py # structlog setup │ └── exceptions.py # Exception hierarchy ├── observability/ # Metrics + tracing ├── models/schemas.py # Pydantic request/response ├── api/routes/ # FastAPI routes └── main.py # FastAPI app + lifespan ``` ## Reference For concrete code examples and anti-patterns, Read [reference/agentic-standards-examples.md](reference/agentic-standards-examples.md). ## Error Handling **Import errors**: Verify LangChain/LangGraph package versions match `pyproject.toml` constraints. **State type mismatches**: Ensure all graph state fields use `TypedDict` with proper `Annotated` types — never `dict[str, Any]`. **Graph recursion errors**: Check `recursion_limit` in config and verify `iteration_count` is incremented in routing functions.
More agent context in kumaran-is/claude-code-onboarding
157 other files this repository gives its agents, the first 60 shown.
CLAUDE.md
Skill
- a2ui-angular.claude/skills/a2ui-angular/SKILL.md
- accessibility-audit.claude/skills/accessibility-audit/SKILL.md
- adk-deploy-guide.claude/skills/adk-deploy-guide/SKILL.md
- adk-dev-guide.claude/skills/adk-dev-guide/SKILL.md
- adk-eval-guide.claude/skills/adk-eval-guide/SKILL.md
- adk-observability-guide.claude/skills/adk-observability-guide/SKILL.md
- agentic-ai-dev.claude/skills/agentic-ai-dev/SKILL.md
- ai-audit.claude/skills/ai-audit/SKILL.md
- ai-chat.claude/skills/ai-chat/SKILL.md
- ai-decision-record.claude/skills/ai-decision-record/SKILL.md
- ai-incident-response.claude/skills/ai-incident-response/SKILL.md
- ai-launch-check.claude/skills/ai-launch-check/SKILL.md
- ai-playbook.claude/skills/ai-playbook/SKILL.md
- angular-best-practices.claude/skills/angular-best-practices/SKILL.md
- angular.claude/skills/angular/SKILL.md
- angular-spa.claude/skills/angular-spa/SKILL.md
- angular-ui-patterns.claude/skills/angular-ui-patterns/SKILL.md
- api-design-principles.claude/skills/api-design-principles/SKILL.md
- app-store-optimization.claude/skills/app-store-optimization/SKILL.md
- architect-review.claude/skills/architect-review/SKILL.md
- architecture-decision-records.claude/skills/architecture-decision-records/SKILL.md
- architecture-design.claude/skills/architecture-design/SKILL.md
- asc-cli-usage.claude/skills/asc-cli-usage/SKILL.md
- asc-crash-triage.claude/skills/asc-crash-triage/SKILL.md
- asc-id-resolver.claude/skills/asc-id-resolver/SKILL.md
- asc-release-flow.claude/skills/asc-release-flow/SKILL.md
- asc-signing-setup.claude/skills/asc-signing-setup/SKILL.md
- asc-submission-health.claude/skills/asc-submission-health/SKILL.md
- asc-testflight-orchestration.claude/skills/asc-testflight-orchestration/SKILL.md
- browser-testing.claude/skills/browser-testing/SKILL.md
- changelog-generator.claude/skills/changelog-generator/SKILL.md
- claude-actions-auditor.claude/skills/claude-actions-auditor/SKILL.md
- clean-code.claude/skills/clean-code/SKILL.md
- codebase-onboarding.claude/skills/codebase-onboarding/SKILL.md
- code-explainer.claude/skills/code-explainer/SKILL.md
- code-reviewer.claude/skills/code-reviewer/SKILL.md
- code-simplifier.claude/skills/code-simplifier/SKILL.md
- comment-analyzer.claude/skills/comment-analyzer/SKILL.md
- database-schema-designer.claude/skills/database-schema-designer/SKILL.md
- ddd-architect.claude/skills/ddd-architect/SKILL.md
- decision-frameworks.claude/skills/decision-frameworks/SKILL.md
- dedup-code-agent.claude/skills/dedup-code-agent/SKILL.md
- deployment-ci-cd.claude/skills/deployment-ci-cd/SKILL.md
- design-system.claude/skills/design-system/SKILL.md
- docker.claude/skills/docker/SKILL.md
- documentation-generation.claude/skills/documentation-generation/SKILL.md
- domain-finder.claude/skills/domain-finder/SKILL.md
- error-detective.claude/skills/error-detective/SKILL.md
- eval-guide.claude/skills/eval-guide/SKILL.md
- feature-forge.claude/skills/feature-forge/SKILL.md
- firebase-basics.claude/skills/firebase-basics/SKILL.md
- firebase-hosting-basics.claude/skills/firebase-hosting-basics/SKILL.md
- fixing-accessibility.claude/skills/fixing-accessibility/SKILL.md
- fixing-motion-performance.claude/skills/fixing-motion-performance/SKILL.md
- flutter-animations.claude/skills/flutter-animations/SKILL.md
- flutter-genui.claude/skills/flutter-genui/SKILL.md
- flutter-mobile.claude/skills/flutter-mobile/SKILL.md
- flutter-security-expert.claude/skills/flutter-security-expert/SKILL.md
- frontend-design.claude/skills/frontend-design/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.

