affaan-m/ECC

quarkus-verification

Quarkusプロジェクト検証ループ:ビルド、静的分析、カバレッジ付きテスト、セキュリティスキャン、ネイティブコンパイル、本番環境またはPR前の差分レビュー。

73CollectingNetwork accessRuns scripts
See how to use itView GitHub source
npx skills add https://github.com/affaan-m/ECC --skill "docs/ja-JP/skills/quarkus-verification"
Automated source guide

Source checked Jul 28, 2026·Refresh due Oct 26, 2026

Reorganized from the pinned upstream SKILL.md

Turn quarkus-verification's source instructions into a guide you can follow

According to the pinned SKILL.md from affaan-m/ECC: PR、メジャー変更後、および本番前に実行します。

npx skills add https://github.com/affaan-m/ECC --skill "docs/ja-JP/skills/quarkus-verification"
Check the pinned source

Best fit

  • Quarkusプロジェクト検証ループ:ビルド、静的分析、カバレッジ付きテスト、セキュリティスキャン、ネイティブコンパイル、本番環境またはPR前の差分レビュー。

Bring this context

  • A concrete task that matches the documented purpose of quarkus-verification.
  • The files, examples, or context the task depends on.
  • Your constraints, target environment, and definition of done.

Expected outputs

  • Quarkusサービスのプルリクエスト開始前
  • メジャーリファクタリングまたは依存関係アップグレード後
  • ステージング本番環境前のプリデプロイメント検証

Key source sections

Read quarkus-verification through these 5 source sections

Sections are extracted automatically from the pinned SKILL.md and link back to the source.

01

Phase 1: Build

Review the “Phase 1: Build” section in the pinned source before continuing.

SKILL.md · Phase 1: Build
Review and apply the “Phase 1: Build” source section.
02

Phase 2: Static Analysis

未使用のインポートまたは変数

SKILL.md · Phase 2: Static Analysis
未使用のインポートまたは変数複雑なメソッド(高い環状複雑度)潜在的なnullポインター逆参照
03

Phase 3: Tests + Coverage

Review the “Phase 3: Tests + Coverage” section in the pinned source before continuing.

SKILL.md · Phase 3: Tests + Coverage
Review and apply the “Phase 3: Tests + Coverage” source section.
04

Phase 4: Security Scanning

CVEについて target/dependency-check-report.html を確認。

SKILL.md · Phase 4: Security Scanning
CVEについて target/dependency-check-report.html を確認。

SkillSignal prompt templates

Provide the task, context, and acceptance criteria

These prompts were written by SkillSignal from the source structure; they are not upstream text.

Task-start prompt

Confirm source fit, inputs, and outputs before acting.

Use quarkus-verification to help me with: [specific task]. Context: [files, data, or background]. Constraints: [environment, scope, and prohibited actions]. Before acting, check the pinned SKILL.md and explain which sections apply, what inputs are still missing, and what you will deliver.

Source-guided execution

Make the Agent explicitly follow the key extracted sections.

Apply the pinned quarkus-verification source to [task]. Pay particular attention to these source sections: “Phase 1: Build”, “Phase 2: Static Analysis”, “Phase 3: Tests + Coverage”, “Phase 4: Security Scanning”, “Phase 5: Native Compilation”. Preserve the important decision at each step. Mark facts not covered by the source as “needs confirmation” instead of inventing them. Then verify the result against my acceptance criteria: [criteria].

Result-review prompt

Check omissions, permissions, and source drift before delivery.

Review the current quarkus-verification result: (1) does it satisfy the original task; (2) were any applicable steps or limits in the pinned SKILL.md missed; (3) did it perform any unauthorized file, command, network, or data action; and (4) which conclusions remain unverified? List issues first, then fix only what the source or user authorization supports.

Output checklist

Verify each item before delivery

The task matches the purpose documented in the SKILL.md.

The source section “Phase 1: Build” has been checked.

The source section “Phase 2: Static Analysis” has been checked.

The source section “Phase 3: Tests + Coverage” has been checked.

The source section “Phase 4: Security Scanning” has been checked.

Inputs, constraints, and acceptance criteria are explicit.

Unverified facts, compatibility, and outcome claims are clearly marked.

Any file, command, network, or data action has been reviewed.

Choose a different workflow

When another Skill is the better fit

FAQ

What does quarkus-verification do?

PR、メジャー変更後、および本番前に実行します。

How do I start using quarkus-verification?

The catalog detected this source-specific install command: npx skills add https://github.com/affaan-m/ECC --skill "docs/ja-JP/skills/quarkus-verification". Inspect the command and pinned source before running it.

Which Agent platforms does it declare?

No dedicated Agent platform is declared in the pinned source record.

Repository stars
234,327
Repository forks
35,711
Quality
73/100
Source repository last pushed

Quality breakdown

Based on traceable docs and repository signals; stars are not treated as quality.

73/100
Documentation26/30
Specificity14/25
Maintenance20/20
Trust signals13/25

Compare before choosing

Related Agent Skills and source variants

These links are selected from shared tasks, functions, stacks, platforms, and same-name variants. Compare the source owner, documentation, permissions, and maintenance signals.

View original Skill.mdThis page is parsed directly from the repository SKILL.md without editorial rewriting. Collected: Jul 28, 2026 · about 2 min

Quarkus Verification Loop

PR、メジャー変更後、および本番前に実行します。

When to Activate

  • Quarkusサービスのプルリクエスト開始前
  • メジャーリファクタリングまたは依存関係アップグレード後
  • ステージング本番環境前のプリデプロイメント検証
  • フル ビルド → リント → テスト → セキュリティスキャン → ネイティブコンパイルパイプライン実行
  • テストカバレッジが閾値を満たす(80%以上)ことを検証
  • ネイティブイメージ互換性テスト

Phase 1: Build

# Maven
mvn clean verify -DskipTests

# Gradle
./gradlew clean assemble -x test

ビルド失敗時は停止してコンパイルエラーを修正します。

Phase 2: Static Analysis

Checkstyle, PMD, SpotBugs (Maven)

mvn checkstyle:check pmd:check spotbugs:check

SonarQube (if configured)

mvn sonar:sonar \
  -Dsonar.projectKey=my-quarkus-project \
  -Dsonar.host.url=http://localhost:9000 \
  -Dsonar.login=${SONAR_TOKEN}

Common Issues to Address

  • 未使用のインポートまたは変数
  • 複雑なメソッド(高い環状複雑度)
  • 潜在的なnullポインター逆参照
  • SpotBugsでフラグが立つセキュリティ問題

Phase 3: Tests + Coverage

# 全テスト実行
mvn clean test

# カバレッジレポート生成
mvn jacoco:report

# カバレッジ閾値を強制(80%)
mvn jacoco:check

# またはGradleで
./gradlew test jacocoTestReport jacocoTestCoverageVerification

Test Categories

Unit Tests

モック化された依存関係でサービスロジックテスト:

@ExtendWith(MockitoExtension.class)
class UserServiceTest {
  @Mock UserRepository userRepository;
  @InjectMocks UserService userService;

  @Test
  void createUser_validInput_returnsUser() {
    var dto = new CreateUserDto("Alice", "alice@example.com");

    // Panacheのpersist()はvoid — doNothing + verifyを使用
    doNothing().when(userRepository).persist(any(User.class));

    User result = userService.create(dto);

    assertThat(result.name).isEqualTo("Alice");
    verify(userRepository).persist(any(User.class));
  }
}

Integration Tests

実データベース(Testcontainers)でテスト:

@QuarkusTest
@QuarkusTestResource(PostgresTestResource.class)
class UserRepositoryIntegrationTest {

  @Inject
  UserRepository userRepository;

  @Test
  @Transactional
  void findByEmail_existingUser_returnsUser() {
    User user = new User();
    user.name = "Alice";
    user.email = "alice@example.com";
    userRepository.persist(user);

    Optional<User> found = userRepository.findByEmail("alice@example.com");

    assertThat(found).isPresent();
    assertThat(found.get().name).isEqualTo("Alice");
  }
}

API Tests

REST Assured でRESTエンドポイントテスト:

@QuarkusTest
class UserResourceTest {

  @Test
  void createUser_validInput_returns201() {
    given()
        .contentType(ContentType.JSON)
        .body("""
            {"name": "Alice", "email": "alice@example.com"}
            """)
        .when().post("/api/users")
        .then()
        .statusCode(201)
        .body("name", equalTo("Alice"));
  }

  @Test
  void createUser_invalidEmail_returns400() {
    given()
        .contentType(ContentType.JSON)
        .body("""
            {"name": "Alice", "email": "invalid"}
            """)
        .when().post("/api/users")
        .then()
        .statusCode(400);
  }
}

Coverage Report

詳細なカバレッジに対してtarget/site/jacoco/index.htmlを確認:

  • 全行カバレッジ(目標:80%以上)
  • ブランチカバレッジ(目標:70%以上)
  • カバレッジされていない重要パスを特定

Phase 4: Security Scanning

Dependency Vulnerabilities (Maven)

mvn org.owasp:dependency-check-maven:check

CVEについて target/dependency-check-report.html を確認。

Quarkus Security Audit

# 脆弱な拡張機能をチェック
mvn quarkus:audit

# 全拡張機能をリスト
mvn quarkus:list-extensions

OWASP ZAP (API Security Testing)

docker run -t owasp/zap2docker-stable zap-api-scan.py \
  -t http://localhost:8080/q/openapi \
  -f openapi

Common Security Checks

  • 全シークレットが環境変数(コード内ではない)
  • 全エンドポイントの入力検証
  • 認証/認可設定済み
  • CORS適切に設定
  • セキュリティヘッダー設定
  • BCryptでパスワードハッシュ化
  • SQLインジェクション保護(パラメータ化クエリ)
  • 公開エンドポイントのレート制限

Phase 5: Native Compilation

GraalVM ネイティブイメージ互換性テスト:

# ネイティブ実行ファイルビルド
mvn package -Dnative

# またはコンテナで
mvn package -Dnative -Dquarkus.native.container-build=true

# ネイティブ実行ファイルテスト
./target/*-runner

# 基本スモークテスト実行
curl http://localhost:8080/q/health/live
curl http://localhost:8080/q/health/ready

Native Image Troubleshooting

一般的な問題:

  • Reflection: 動的クラスのリフレクション設定追加
  • Resources: quarkus.native.resources.includesでリソース含める
  • JNI: ネイティブライブラリ使用時JNIクラス登録

リフレクション設定例:

@RegisterForReflection(targets = {MyDynamicClass.class})
public class ReflectionConfiguration {}

Phase 6: Performance Testing

Load Testing with K6

// load-test.js
import http from 'k6/http';
import { check } from 'k6';

export const options = {
  stages: [
    { duration: '30s', target: 50 },
    { duration: '1m', target: 100 },
    { duration: '30s', target: 0 },
  ],
};

export default function () {
  const res = http.get('http://localhost:8080/api/markets');
  check(res, {
    'status is 200': (r) => r.status === 200,
    'response time < 200ms': (r) => r.timings.duration < 200,
  });
}

実行:

k6 run load-test.js

Metrics to Monitor

  • レスポンスタイム(p50、p95、p99)
  • スループット(リクエスト/秒)
  • エラー率
  • メモリ使用量
  • CPU使用量

Phase 7: Health Checks

# Liveness
curl http://localhost:8080/q/health/live

# Readiness
curl http://localhost:8080/q/health/ready

# 全ヘルスチェック
curl http://localhost:8080/q/health

# メトリクス(有効な場合)
curl http://localhost:8080/q/metrics

期待されるレスポンス:

{
  "status": "UP",
  "checks": [
    {
      "name": "Database connection",
      "status": "UP"
    }
  ]
}

Phase 8: Container Image Build

# コンテナイメージビルド
mvn package -Dquarkus.container-image.build=true

# または特定のレジストリで
mvn package \
  -Dquarkus.container-image.build=true \
  -Dquarkus.container-image.registry=docker.io \
  -Dquarkus.container-image.group=myorg \
  -Dquarkus.container-image.tag=1.0.0

# コンテナテスト
docker run -p 8080:8080 myorg/my-quarkus-app:1.0.0

Container Security Scan

# Trivy
trivy image myorg/my-quarkus-app:1.0.0

# Grype
grype myorg/my-quarkus-app:1.0.0

Phase 9: Configuration Validation

# 全設定プロパティをチェック
mvn quarkus:info

# 全設定ソースをリスト
curl http://localhost:8080/q/dev/io.quarkus.quarkus-vertx-http/config

Environment-Specific Checks

  • データベースURLが環境ごとに設定
  • シークレットが外部化(Vault、環境変数)
  • ロギングレベルが適切
  • CORS origins が正しく設定
  • レート制限を設定
  • モニタリング/トレーシング有効化

Phase 10: Documentation Review

  • OpenAPI/Swaggerドキュメント最新(/q/swagger-ui
  • READMEにセットアップ説明有り
  • APIの変更が文書化
  • 互換性破壊の変更にマイグレーションガイド
  • 設定プロパティが文書化

OpenAPI spec生成:

curl http://localhost:8080/q/openapi -o openapi.json

Verification Checklist

Code Quality

  • ビルドが警告なしで成功
  • 静的分析がクリーン(高/中レベル問題なし)
  • コードがチーム規則に従う
  • PRにコメント・TODOなし

Testing

  • 全テスト成功
  • コードカバレッジ ≥ 80%
  • 実データベースでの統合テスト
  • セキュリティテスト成功
  • パフォーマンスが許容範囲内

Security

  • 依存関係の脆弱性なし
  • 認証/認可テスト済み
  • 入力検証が完全
  • シークレットがソースコードに無い
  • セキュリティヘッダー設定済み

Deployment

  • ネイティブコンパイル成功
  • コンテナイメージビルド成功
  • ヘルスチェック正しく動作
  • ターゲット環境の設定が有効

Native Image

  • ネイティブ実行ファイルビルド成功
  • ネイティブテスト成功
  • 起動時間 < 100ms
  • メモリフットプリント許容範囲

Automated Verification Script

#!/bin/bash
set -e

echo "=== Phase 1: Build ==="
mvn clean verify -DskipTests

echo "=== Phase 2: Static Analysis ==="
mvn checkstyle:check pmd:check spotbugs:check

echo "=== Phase 3: Tests + Coverage ==="
mvn test jacoco:report jacoco:check

echo "=== Phase 4: Security Scan ==="
mvn org.owasp:dependency-check-maven:check

echo "=== Phase 5: Native Compilation ==="
mvn package -Dnative -Dquarkus.native.container-build=true

echo "=== All Phases Complete ==="
echo "Review reports:"
echo "  - Coverage: target/site/jacoco/index.html"
echo "  - Security: target/dependency-check-report.html"
echo "  - Native: target/*-runner"

CI/CD Integration

GitHub Actions Example

name: Verification

on: [push, pull_request]

jobs:
  verify:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Set up JDK 21
        uses: actions/setup-java@v3
        with:
          java-version: '21'
          distribution: 'temurin'

      - name: Cache Maven packages
        uses: actions/cache@v3
        with:
          path: ~/.m2
          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}

      - name: Build
        run: mvn clean verify -DskipTests

      - name: Test with Coverage
        run: mvn test jacoco:report jacoco:check

      - name: Security Scan
        run: mvn org.owasp:dependency-check-maven:check

      - name: Upload Coverage
        uses: codecov/codecov-action@v3
        with:
          files: target/site/jacoco/jacoco.xml

Best Practices

  • 全PRの前に検証ループ実行
  • CI/CDパイプラインで自動化
  • 問題は即座に修正、債務を溜めない
  • カバレッジを80%以上に保つ
  • 依存関係を定期的にアップデート
  • 定期的にネイティブコンパイルテスト
  • パフォーマンストレンドを監視
  • 互換性破壊の変更を文書化
  • セキュリティスキャン結果をレビュー
  • 環境ごとに設定を検証
Source repo
affaan-m/ECC
Skill path
docs/ja-JP/skills/quarkus-verification/SKILL.md
Commit SHA
4e973d3eaf92
Repository license
MIT
Data collected