| name | spsdk-development-workflow |
| description | Development workflow for the SPSDK project. Use this skill whenever working on an SPSDK Jira ticket, bug fix, feature, or any code change in the SPSDK repository. Provides step-by-step guidance for analysis, branching, implementation, testing, and code quality checks. |
SPSDK Development Workflow Skill
This skill documents the approved development process for SPSDK. Follow this workflow to ensure code quality, proper tracking, and consistency across the project.
Server Access Information
JIRA Server
- URL: https://jira.sw.nxp.com/
- Project: SPSDK
- Ticket Format: SPSDK-XXXX
- Access Token: Use environment variable
JIRA_TOKEN_FOR_COPILOT
Bitbucket Server
Phase 1: Issue Analysis & Planning
Checkpoint 1.1: Move Issue to Analysis — DO THIS FIRST
As soon as you start working on a ticket, immediately move it to "Analysis" status in JIRA.
This must be the very first action, before reading the issue or touching any code.
Checkpoint 1.2: Analyze if Code Change is Needed
Phase 2: Branching & Setup
Checkpoint 2.1: Create Feature Branch
Branch naming convention:
[SPSDK-xxxx] Problem Name
With optional prefix:
bugfix/[SPSDK-xxxx]-problem-name
feature/[SPSDK-xxxx]-problem-name
Important: Branch off from MASTER unless user explicitly specifies otherwise (e.g., NPI branches, integration branches).
git checkout -B "bugfix/SPSDK-1234-fix-smr-verification"
Important: When pushing a new branch, always use -u flag to set upstream tracking:
git push -u origin feature/SPSDK-1234-feature-name
Without -u, VS Code will still show "Publish Branch" even though the branch exists on remote, because no upstream tracking is configured.
Checkpoint 2.2: Verify Environment
Phase 3: Implementation
Checkpoint 3.1: Investigation & Root Cause Analysis
DO NOT make quick fixes without understanding the root cause.
Checkpoint 3.2: Leverage Existing SPSDK APIs
Prefer reusing existing patterns and APIs over creating new ones.
Checkpoint 3.3: Data & Configuration Changes
Never modify data (YAML, database) without explicit user confirmation.
Checkpoint 3.4: Implementation Best Practices
Phase 4: Testing
Checkpoint 4.1: Unit Tests for New Code
For every new feature or public API, add corresponding unit tests.
Checkpoint 4.2: Verify Test Coverage
Phase 5: Code Quality Checks
Checkpoint 5.1: Quick Lint Check (Fast Feedback Loop)
For first quick validation use RUFF only:
codecheck -c ruff -f
This auto-fixes most issues and provides immediate feedback.
Checkpoint 5.2: Full Codecheck
Run complete code quality check:
codecheck -s -o reports
General Guidelines
Communication & Decisions
- Ask before implementing major changes — Don't assume, verify with user
- Prefer discussion over quick fixes — Take time to understand the problem fully
- Document your reasoning — In commits, comments, and code
- Escalate uncertainty — Ask user if you're unsure about design/approach
Common Pitfalls to Avoid
❌ Don't:
- Modify data files without user approval
- Make quick one-line fixes without understanding root cause
- Run linters directly (e.g.,
black instead of codecheck)
- Forget type annotations (mypy is strict)
- Create commits without JIRA ticket prefix
- Assume device database structure — verify first
- Skip tests for "simple" changes
- Leave temporary files/directories in the workspace (e.g., generated templates, test outputs)
✅ Do:
- Move ticket to "Analysis" immediately when starting work
- Ask questions when unsure
- Use existing APIs and patterns
- Run full
codecheck before PR
- Write comprehensive tests
- Format commits with ticket reference
- Document complex logic
- Consider side effects and implications
- Clean up after yourself — delete any temporary files, generated templates, test outputs, or scratch directories created during investigation. Use
Remove-Item -Recurse -Force for directories