본문으로 건너뛰기
cccskills
무료GitHub에 공개

validate

Run the SDLC validation pipeline using direct tool invocations. No wrapper scripts required. Use when checking code quality before commits or PRs.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(1)

  • SKILL.md5.3 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

SDLC Validation

Run the validation pipeline at the specified level. Each check calls standard tools directly — no wrapper scripts needed.

Arguments

  • --syntax — Syntax only (fast, after every edit)
  • --quick — Syntax + lint + tests (before commits)
  • --pre-push — Full pipeline (before PRs). This is the default.

Preflight

Before running any check, verify the tool is available. Report missing tools clearly:

[SKIP] <tool> — not installed (run: <install command>)

Missing tools at --syntax level: warn but continue. Missing tools at --quick or --pre-push level: report all missing tools, then stop.

Preflight checks

ToolCheck commandInstall command
ruffwhich ruffpip install ruff
pytestwhich pytestpip install pytest
mypywhich mypypip install mypy
banditwhich banditpip install bandit

Also check:

  • Virtual environment active: which python should contain .venv. If not, warn: "No virtual environment active. Run: source .venv/bin/activate"
  • Test directory exists: ls tests/ should find test files. If tests/ missing or empty, report: "No tests found. Tests are mandatory (Constitution Article 10.2)."

--syntax (after every edit)

Run these checks:

  1. Python AST check — verify all .py files parse:
python -c "
import ast, sys, pathlib
errors = []
for f in pathlib.Path('.').rglob('*.py'):
    if '.venv' in str(f):
        continue
    try:
        ast.parse(f.read_text())
    except SyntaxError as e:
        errors.append(f'{f}:{e.lineno}: {e.msg}')
if errors:
    print('Syntax errors found:')
    for e in errors:
        print(f'  {e}')
    sys.exit(1)
print(f'Syntax OK — {len(list(pathlib.Path(\".\").rglob(\"*.py\")))} files checked')
"
  1. Ruff syntax errors only (if ruff installed):
ruff check . --select E9,F63,F7,F82

Report results:

[PASS] Syntax check — N files checked, 0 errors
[PASS] Ruff (syntax) — 0 issues

--quick (before commits)

Run all --syntax checks, then:

  1. Ruff full lint:
ruff check .
  1. Ruff format check:
ruff format --check .
  1. Technical debt scan:
grep -rn "TODO\|FIXME\|HACK\|XXX" --include="*.py" --exclude-dir=.venv . || true

If any matches found, report as failure (Production+) or warning (Prototype).

  1. Test execution:
pytest --tb=short -q

If pytest is not installed or no tests exist, this is a failure (not a skip).

  1. Import smoke test — verify the main module imports:
python -c "import app" 2>/dev/null || python -c "import main" 2>/dev/null || echo "No app/main module found (skipping import check)"

Report results:

[PASS] Ruff — 0 issues
[PASS] Format — all files formatted
[PASS] Technical debt — 0 markers
[PASS] Pytest — N passed, 0 failed
[PASS] Import check — app module imports cleanly

--pre-push (before PRs)

Run all --quick checks, then:

  1. Type checking:
mypy . --ignore-missing-imports

Or if mypy.ini or pyproject.toml configures mypy, just:

mypy .
  1. Security scan:
bandit -r . --exclude ./.venv -q
  1. Smoke test — start the app and verify it responds:
# Start the app in background
python app.py &
APP_PID=$!
sleep 3

# Check it's running
if kill -0 $APP_PID 2>/dev/null; then
    echo "[PASS] App started (PID $APP_PID)"
    # Try to hit an endpoint (adjust port to project)
    HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:18080/ 2>/dev/null || echo "000")
    if [ "$HTTP_CODE" -ge 200 ] && [ "$HTTP_CODE" -lt 400 ]; then
        echo "[PASS] Smoke test — HTTP $HTTP_CODE"
    else
        echo "[WARN] App started but endpoint returned HTTP $HTTP_CODE"
    fi
    kill $APP_PID 2>/dev/null
else
    echo "[FAIL] App failed to start"
fi

If no app.py or main.py exists, skip the smoke test with:

[SKIP] Smoke test — no app entry point found (not a web application)

Summary Output

After all checks, print a summary:

=== SDLC Validation Summary (--pre-push) ===

[PASS] Syntax check — 12 files, 0 errors
[PASS] Ruff (syntax) — 0 issues
[PASS] Ruff (full) — 0 issues
[PASS] Format — all files formatted
[PASS] Technical debt — 0 markers
[PASS] Pytest — 30 passed, 0 failed
[PASS] Import check — clean
[PASS] Mypy — 0 errors
[PASS] Bandit — 0 issues
[PASS] Smoke test — HTTP 200

Result: 10 PASS, 0 FAIL, 0 SKIP

If any check is FAIL:

  1. Show the specific failures above the summary
  2. Do NOT proceed with commits or PRs
  3. Suggest fixes for each failure

Language Detection

Detect project language by scanning the project root:

  • *.py files present → use Python checks (ruff, mypy, pytest, bandit)
  • *.ts or *.js files present → use JS checks (eslint, tsc, jest or vitest)
  • *.go files present → use Go checks (go vet, staticcheck, go test)
  • Multiple languages → run checks for each detected language

Python is the primary implementation. Other languages follow the same structure with equivalent tools.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Generate a GitHub Actions workflow for Android — JDK + Gradle caching, build, unit + instrumented tests, Android Lint, run the Android pre-flight checks, and (optionally) sign + upload a signed app bundle to a Play track. Use when setting up CI for an Android app.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

SteveGJones/ai-first-sdlc-practices412026년 10월 5일 업데이트

Validated Google Play release — runs the pre-flight checks and clears the Play policy gates, builds a signed app bundle with a git-stamped versionCode, uploads to a track, and walks staged rollout (with halt/roll-forward). Use when releasing an Android app to Play.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

SteveGJones/ai-first-sdlc-practices412026년 10월 5일 업데이트

Scaffold a new Android app with SDLC and Play-safe defaults — Kotlin/Compose Gradle project with version catalog, convention plugins, module layout, a targetSdk that meets the Play mandate, R8 on release, and git-ignored signing so it passes the pre-flight checker from day one. Use when starting a new Android project.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

SteveGJones/ai-first-sdlc-practices412026년 10월 5일 업데이트

Set up Android app signing safely — generate an upload keystore, enroll in Play App Signing, and wire a Gradle release signingConfig that reads secrets from a git-ignored keystore.properties / CI (never committed). Use when configuring signing for a Play release.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

SteveGJones/ai-first-sdlc-practices412026년 10월 5일 업데이트

Pick an existing workflow for a task or author a new one — recommends workflow + team formation, or generates a fresh workflow YAML with command prompts and team validation.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

SteveGJones/ai-first-sdlc-practices412026년 10월 5일 업데이트

Guide the team through writing a change-impact record for IEC 62304 / FDA / ISO 26262 ASIL C+ projects. Surfaces the affected REQ/DES/TEST/CODE artefacts and captures human-attested verification approach.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

SteveGJones/ai-first-sdlc-practices412026년 10월 5일 업데이트

SteveGJones의 스킬 모두 보기

이 스킬의 문제 신고