build-api-817a12 — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited build-api-817a12 (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Build backend API endpoints, services, and database changes following NestJS patterns, Prisma schema design, and the project's clean architecture conventions.
[!CAUTION] Scope boundary: This skill implements backend code and commits it. It does NOT create pull requests, push to remote, run code reviews, or submit anything for merge. When implementation and commits are complete, stop and suggest the user run /review-code next.Ensure we are on a feature branch based on the latest main. Always fetch first:
git fetch origin mainIf on main, create a new feature branch from the latest origin/main:
git checkout -b feature/<feature-slug> origin/mainIf already on an existing feature branch, rebase it onto the latest origin/main to pick up any changes:
git status --porcelainIf the working tree is dirty, stash changes before rebasing:
git stash push -m "build-api: stash before rebase"
git rebase origin/main
git stash popIf the working tree is clean, rebase directly:
git rebase origin/mainIf the user provides a GitHub issue number (e.g., /build-api 42 or /build-api #42), fetch the issue and signal work is in progress (see AGENTS.md "Label Management" for rules):
gh issue view <number> --json title,body,labels,state,number
# Single-developer constraint: only one issue should be in-progress at a time.
# First, remove in-progress from any other issue that has it:
gh issue list --label "in-progress" --state open --json number --jq '.[].number' | while read n; do
gh issue edit "$n" --remove-label "in-progress"
done
gh issue edit <number> --add-label "in-progress"Verify the issue is tracked on the Product Roadmap project board. If not, add it:
# --limit 200 covers the current board size; increase if the project grows beyond 200 items
EXISTING=$(gh project item-list {PROJECT_NUMBER} --owner {OWNER} --format json --limit 200 \
| python3 -c "
import json, sys
data = json.load(sys.stdin)
for item in data.get('items', []):
# <number> must be an integer literal, e.g., == 42, not == '42'
if item.get('content', {}).get('number') == <number>:
print(item['id'])
break
")
if [ -z "$EXISTING" ]; then
ITEM_ID=$(gh project item-add {PROJECT_NUMBER} --owner {OWNER} --url "https://github.com/{OWNER}/{REPO}/issues/<number>" --format json | python3 -c "import json,sys; print(json.load(sys.stdin)['id'])")
echo "Warning: Issue #<number> was not on the project board. Added it now (item $ITEM_ID)."
fi[!WARNING] If the issue was missing from the project board, it may also be missing phase, size, and date fields. Check the project item and warn the user if fields are unset — this suggests the issue was created outside of/plan-featureor/security-audit, which are the skills that ensure board membership and field population.
Ask the user (or read from the decision record / issue body if /plan-feature was run first):
If a decision record exists in docs/decisions/, read it for the task breakdown.
Invoke /backend-development:api-design-principles for API design guidance.
Design the full API contract:
If this represents a significant API decision (new resource type, breaking change to existing API, new architectural pattern), activate the Architecture Council using .claude/councils/architecture-council.md:
Model Selection: See the Model Selection section in README.md for mapping agent model specs to Task tool parameters.
If schema changes are required:
/database-design:postgresql for PostgreSQL schema design guidance/database-migrations:sql-migrations for migration generation guidance pnpm db:migrateFollow NestJS patterns and /backend-development:architecture-patterns for clean architecture:
Use /javascript-typescript:typescript-advanced-types for complex type scenarios (generics, conditional types, mapped types).
For performance-sensitive endpoints, invoke /application-performance:performance-optimization for API profiling and optimization patterns.
Following the QA Lead testing strategy:
Run tests and verify coverage:
pnpm testEnsure coverage meets the >80% target.
Invoke /documentation-generation:openapi-spec-generation to generate or update API documentation for the new endpoints.
If using tRPC, document the procedure signatures and usage examples. If using REST, generate or update the OpenAPI/Swagger specification.
Before presenting to the user, verify:
pnpm type-check # No TypeScript errors
pnpm lint # No linting violations
pnpm format:check # No Prettier formatting issues
pnpm test # All unit tests pass
pnpm test:smoke # DI container and HTTP pipeline boot OKIf format:check fails, run pnpm exec prettier --write on the reported files before proceeding.
Check for common issues:
any types)If this API change alters how the project is set up, built, or run, update the relevant documentation before committing:
docs/, add them to the appropriate table in the master documentation index[!IMPORTANT] A developer cloning the repo fresh must be able to get the project running by following README.md alone. If your API change adds a Docker service, database, new environment variable, or external dependency, the docs MUST reflect it.
Commit with conventional commit format:
feat(api): add <resource> endpointsOr if modifying existing endpoints:
feat(api): update <resource> with <change-description>If implementation was initiated from a GitHub issue:
gh issue comment <number> --body "Implementation committed on branch \`<branch-name>\`. Proceeding to code review via \`/review-code\`."[!NOTE] Do not remove thein-progresslabel here. The label stays on the issue until it is closed (handled automatically by.github/workflows/label-cleanup.yml). This ensures the issue remains visibly in-progress through code review and PR submission.
[!CAUTION] This skill's work is done. Do NOT proceed to create a pull request, push to remote, or run a code review. Those are separate skills with their own workflows and checkpoints.
Present the next step to the user:
/review-code for multi-perspective security and quality review before submitting/review-codeIf working from a GitHub issue, remind the user:
Closes #<number> so it auto-closes when merged/submit-pr will detect related issues from commit messagesPipeline: /plan-feature → /build-feature or `/build-api` → /review-code → /submit-pr
Do not push the branch, create a PR, or invoke `/submit-pr` from within this skill.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.