affaan-m/ECC

springboot-verification

Verification loop for Spring Boot projects: build, static analysis, tests with coverage, security scans, and diff review before release or PR.

74CollectingRuns scripts
See how to use itView GitHub source
npx skills add https://github.com/affaan-m/ECC --skill "docs/tr/skills/springboot-verification"
Automated source guide

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

Reorganized from the pinned upstream SKILL.md

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

According to the pinned SKILL.md from affaan-m/ECC: PR'lardan önce, büyük değişikliklerden sonra ve deployment öncesi çalıştırın.

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

Best fit

  • Verification loop for Spring Boot projects: build, static analysis, tests with coverage, security scans, and diff review before release or PR.

Bring this context

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

Expected outputs

  • A result that follows the pinned springboot-verification instructions.
  • A concise record of assumptions, inputs used, and unresolved questions.
  • A final check against the source workflow and relevant permission signals.

Key source sections

Read springboot-verification through these 5 source sections

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

01

Ne Zaman Aktif Edilir

Spring Boot servisi için pull request açmadan önce

SKILL.md · Ne Zaman Aktif Edilir
Spring Boot servisi için pull request açmadan önceBüyük refactoring veya bağımlılık yükseltmelerinden sonraStaging veya production için deployment öncesi doğrulama
03

veya

./gradlew clean assemble -x test bash mvn -T 4 spotbugs:check pmd:check checkstyle:check bash ./gradlew checkstyleMain pmdMain spotbugsMain bash mvn -T 4 test mvn jacoco:report 80%+ kapsam doğrula

SKILL.md · veya
./gradlew clean assemble -x test bash mvn -T 4 spotbugs:check pmd:check checkstyle:check bash ./gradlew checkstyleMain pmdMain spotbugsMain bash mvn -T 4 test mvn jacoco:report 80%+ kapsam doğrula

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 springboot-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 springboot-verification source to [task]. Pay particular attention to these source sections: “Ne Zaman Aktif Edilir”, “Faz 1: Build”, “veya”, “Faz 2: Static Analiz”, “Faz 3: Testler + Kapsam”. 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 springboot-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 “Ne Zaman Aktif Edilir” has been checked.

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

The source section “veya” has been checked.

The source section “Faz 2: Static Analiz” 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 springboot-verification do?

PR'lardan önce, büyük değişikliklerden sonra ve deployment öncesi çalıştırın.

How do I start using springboot-verification?

The catalog detected this source-specific install command: npx skills add https://github.com/affaan-m/ECC --skill "docs/tr/skills/springboot-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
74/100
Source repository last pushed

Quality breakdown

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

74/100
Documentation27/30
Specificity17/25
Maintenance20/20
Trust signals10/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 1 min

Spring Boot Doğrulama Döngüsü

PR'lardan önce, büyük değişikliklerden sonra ve deployment öncesi çalıştırın.

Ne Zaman Aktif Edilir

  • Spring Boot servisi için pull request açmadan önce
  • Büyük refactoring veya bağımlılık yükseltmelerinden sonra
  • Staging veya production için deployment öncesi doğrulama
  • Tam build → lint → test → güvenlik taraması pipeline'ı çalıştırma
  • Test kapsamının eşikleri karşıladığını doğrulama

Faz 1: Build

mvn -T 4 clean verify -DskipTests
# veya
./gradlew clean assemble -x test

Build başarısız olursa, durdurun ve düzeltin.

Faz 2: Static Analiz

Maven (yaygın plugin'ler):

mvn -T 4 spotbugs:check pmd:check checkstyle:check

Gradle (yapılandırılmışsa):

./gradlew checkstyleMain pmdMain spotbugsMain

Faz 3: Testler + Kapsam

mvn -T 4 test
mvn jacoco:report   # 80%+ kapsam doğrula
# veya
./gradlew test jacocoTestReport

Rapor:

  • Toplam testler, geçen/başarısız
  • Kapsam % (satırlar/dallar)

Unit Testler

Mock bağımlılıklarla izole olarak servis mantığını test edin:

@ExtendWith(MockitoExtension.class)
class UserServiceTest {

  @Mock private UserRepository userRepository;
  @InjectMocks private UserService userService;

  @Test
  void createUser_validInput_returnsUser() {
    var dto = new CreateUserDto("Alice", "alice@example.com");
    var expected = new User(1L, "Alice", "alice@example.com");
    when(userRepository.save(any(User.class))).thenReturn(expected);

    var result = userService.create(dto);

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

  @Test
  void createUser_duplicateEmail_throwsException() {
    var dto = new CreateUserDto("Alice", "existing@example.com");
    when(userRepository.existsByEmail(dto.email())).thenReturn(true);

    assertThatThrownBy(() -> userService.create(dto))
        .isInstanceOf(DuplicateEmailException.class);
  }
}

Testcontainers ile Entegrasyon Testleri

H2 yerine gerçek bir veritabanına karşı test edin:

@SpringBootTest
@Testcontainers
class UserRepositoryIntegrationTest {

  @Container
  static PostgreSQLContainer<?> postgres = new PostgreSQLContainer<>("postgres:16-alpine")
      .withDatabaseName("testdb");

  @DynamicPropertySource
  static void configureProperties(DynamicPropertyRegistry registry) {
    registry.add("spring.datasource.url", postgres::getJdbcUrl);
    registry.add("spring.datasource.username", postgres::getUsername);
    registry.add("spring.datasource.password", postgres::getPassword);
  }

  @Autowired private UserRepository userRepository;

  @Test
  void findByEmail_existingUser_returnsUser() {
    userRepository.save(new User("Alice", "alice@example.com"));

    var found = userRepository.findByEmail("alice@example.com");

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

MockMvc ile API Testleri

Tam Spring context ile controller katmanını test edin:

@WebMvcTest(UserController.class)
class UserControllerTest {

  @Autowired private MockMvc mockMvc;
  @MockBean private UserService userService;

  @Test
  void createUser_validInput_returns201() throws Exception {
    var user = new UserDto(1L, "Alice", "alice@example.com");
    when(userService.create(any())).thenReturn(user);

    mockMvc.perform(post("/api/users")
            .contentType(MediaType.APPLICATION_JSON)
            .content("""
                {"name": "Alice", "email": "alice@example.com"}
                """))
        .andExpect(status().isCreated())
        .andExpect(jsonPath("$.name").value("Alice"));
  }

  @Test
  void createUser_invalidEmail_returns400() throws Exception {
    mockMvc.perform(post("/api/users")
            .contentType(MediaType.APPLICATION_JSON)
            .content("""
                {"name": "Alice", "email": "not-an-email"}
                """))
        .andExpect(status().isBadRequest());
  }
}

Faz 4: Güvenlik Taraması

# Bağımlılık CVE'leri
mvn org.owasp:dependency-check-maven:check
# veya
./gradlew dependencyCheckAnalyze

# Kaynakta gizli bilgiler
grep -rn "password\s*=\s*\"" src/ --include="*.java" --include="*.yml" --include="*.properties"
grep -rn "sk-\|api_key\|secret" src/ --include="*.java" --include="*.yml"

# Gizli bilgiler (git geçmişi)
git secrets --scan  # yapılandırılmışsa

Yaygın Güvenlik Bulguları

# System.out.println kontrolü (yerine logger kullan)
grep -rn "System\.out\.print" src/main/ --include="*.java"

# Yanıtlarda ham exception mesajları kontrolü
grep -rn "e\.getMessage()" src/main/ --include="*.java"

# Wildcard CORS kontrolü
grep -rn "allowedOrigins.*\*" src/main/ --include="*.java"

Faz 5: Lint/Format (opsiyonel kapı)

mvn spotless:apply   # Spotless plugin kullanıyorsanız
./gradlew spotlessApply

Faz 6: Diff İncelemesi

git diff --stat
git diff

Kontrol listesi:

  • Debug logları kalmamış (System.out, koruma olmadan log.debug)
  • Anlamlı hatalar ve HTTP durumları
  • Gerekli yerlerde transaction'lar ve validation mevcut
  • Config değişiklikleri belgelenmiş

Çıktı Şablonu

DOĞRULAMA RAPORU
===================
Build:     [GEÇTİ/BAŞARISIZ]
Static:    [GEÇTİ/BAŞARISIZ] (spotbugs/pmd/checkstyle)
Testler:   [GEÇTİ/BAŞARISIZ] (X/Y geçti, Z% kapsam)
Güvenlik:  [GEÇTİ/BAŞARISIZ] (CVE bulguları: N)
Diff:      [X dosya değişti]

Genel:     [HAZIR / HAZIR DEĞİL]

Düzeltilecek Sorunlar:
1. ...
2. ...

Sürekli Mod

  • Önemli değişikliklerde veya uzun oturumlarda her 30-60 dakikada bir fazları yeniden çalıştırın
  • Kısa döngü tutun: hızlı geri bildirim için mvn -T 4 test + spotbugs

Unutmayın: Hızlı geri bildirim geç sürprizleri yener. Kapıyı sıkı tutun—production sistemlerinde uyarıları kusur olarak değerlendirin.

Source repo
affaan-m/ECC
Skill path
docs/tr/skills/springboot-verification/SKILL.md
Commit SHA
4e973d3eaf92
Repository license
MIT
Data collected