[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7CSS11Z3385B23Z1F0JQQCE":3,"skill-same:01M7CSS11Z3385B23Z1F0JQQCE":48},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":26,"commitSha":27,"skillDirectory":28,"forksCount":14,"repositoryHtmlUrl":29,"repositoryHomepageUrl":6,"ownerHtmlUrl":30,"ownerBlogUrl":31,"ownerDescription":32,"updatedAt":33,"install":34,"resources":47},"01M7CSS11Z3385B23Z1F0JQQCE","springboot-verification",null,"Verification loop for Spring Boot projects: build, static analysis, tests with coverage, security scans, and diff review before release or PR.","Henrique1601\u002FSkiilsToIAs","Henrique1601","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F92006691?v=4","01M7CRXVT0GVXVK80JT1GR687S","Henrique Bezerra Dos Santos","01M7CRXVTN5Y8TMWJ1MDSKCQ1T",0,"MIT","https:\u002F\u002Fgithub.com\u002FHenrique1601\u002FSkiilsToIAs\u002Fblob\u002Fmain\u002Fbackend-database\u002Fspringboot-verification\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: springboot-verification\ndescription: \"Verification loop for Spring Boot projects: build, static analysis, tests with coverage, security scans, and diff review before release or PR.\"\nmetadata:\n  origin: ECC\n---\n\n# Spring Boot Verification Loop\n\nRun before PRs, after major changes, and pre-deploy.\n\n## When to Activate\n\n- Before opening a pull request for a Spring Boot service\n- After major refactoring or dependency upgrades\n- Pre-deployment verification for staging or production\n- Running full build → lint → test → security scan pipeline\n- Validating test coverage meets thresholds\n\n## Phase 1: Build\n\n```bash\nmvn -T 4 clean verify -DskipTests\n# or\n.\u002Fgradlew clean assemble -x test\n```\n\nIf build fails, stop and fix.\n\n## Phase 2: Static Analysis\n\nMaven (common plugins):\n```bash\nmvn -T 4 spotbugs:check pmd:check checkstyle:check\n```\n\nGradle (if configured):\n```bash\n.\u002Fgradlew checkstyleMain pmdMain spotbugsMain\n```\n\n## Phase 3: Tests + Coverage\n\n```bash\nmvn -T 4 test\nmvn jacoco:report   # verify 80%+ coverage\n# or\n.\u002Fgradlew test jacocoTestReport\n```\n\nReport:\n- Total tests, passed\u002Ffailed\n- Coverage % (lines\u002Fbranches)\n\n### Unit Tests\n\nTest service logic in isolation with mocked dependencies:\n\n```java\n@ExtendWith(MockitoExtension.class)\nclass UserServiceTest {\n\n  @Mock private UserRepository userRepository;\n  @InjectMocks private UserService userService;\n\n  @Test\n  void createUser_validInput_returnsUser() {\n    var dto = new CreateUserDto(\"Alice\", \"alice@example.com\");\n    var expected = new User(1L, \"Alice\", \"alice@example.com\");\n    when(userRepository.save(any(User.class))).thenReturn(expected);\n\n    var result = userService.create(dto);\n\n    assertThat(result.name()).isEqualTo(\"Alice\");\n    verify(userRepository).save(any(User.class));\n  }\n\n  @Test\n  void createUser_duplicateEmail_throwsException() {\n    var dto = new CreateUserDto(\"Alice\", \"existing@example.com\");\n    when(userRepository.existsByEmail(dto.email())).thenReturn(true);\n\n    assertThatThrownBy(() -> userService.create(dto))\n        .isInstanceOf(DuplicateEmailException.class);\n  }\n}\n```\n\n### Integration Tests with Testcontainers\n\nTest against a real database instead of H2:\n\n```java\n@SpringBootTest\n@Testcontainers\nclass UserRepositoryIntegrationTest {\n\n  @Container\n  static PostgreSQLContainer\u003C?> postgres = new PostgreSQLContainer\u003C>(\"postgres:16-alpine\")\n      .withDatabaseName(\"testdb\");\n\n  @DynamicPropertySource\n  static void configureProperties(DynamicPropertyRegistry registry) {\n    registry.add(\"spring.datasource.url\", postgres::getJdbcUrl);\n    registry.add(\"spring.datasource.username\", postgres::getUsername);\n    registry.add(\"spring.datasource.password\", postgres::getPassword);\n  }\n\n  @Autowired private UserRepository userRepository;\n\n  @Test\n  void findByEmail_existingUser_returnsUser() {\n    userRepository.save(new User(\"Alice\", \"alice@example.com\"));\n\n    var found = userRepository.findByEmail(\"alice@example.com\");\n\n    assertThat(found).isPresent();\n    assertThat(found.get().getName()).isEqualTo(\"Alice\");\n  }\n}\n```\n\n### API Tests with MockMvc\n\nTest controller layer with full Spring context:\n\n```java\n@WebMvcTest(UserController.class)\nclass UserControllerTest {\n\n  @Autowired private MockMvc mockMvc;\n  @MockBean private UserService userService;\n\n  @Test\n  void createUser_validInput_returns201() throws Exception {\n    var user = new UserDto(1L, \"Alice\", \"alice@example.com\");\n    when(userService.create(any())).thenReturn(user);\n\n    mockMvc.perform(post(\"\u002Fapi\u002Fusers\")\n            .contentType(MediaType.APPLICATION_JSON)\n            .content(\"\"\"\n                {\"name\": \"Alice\", \"email\": \"alice@example.com\"}\n                \"\"\"))\n        .andExpect(status().isCreated())\n        .andExpect(jsonPath(\"$.name\").value(\"Alice\"));\n  }\n\n  @Test\n  void createUser_invalidEmail_returns400() throws Exception {\n    mockMvc.perform(post(\"\u002Fapi\u002Fusers\")\n            .contentType(MediaType.APPLICATION_JSON)\n            .content(\"\"\"\n                {\"name\": \"Alice\", \"email\": \"not-an-email\"}\n                \"\"\"))\n        .andExpect(status().isBadRequest());\n  }\n}\n```\n\n## Phase 4: Security Scan\n\n```bash\n# Dependency CVEs\nmvn org.owasp:dependency-check-maven:check\n# or\n.\u002Fgradlew dependencyCheckAnalyze\n\n# Secrets in source\ngrep -rn \"password\\s*=\\s*\\\"\" src\u002F --include=\"*.java\" --include=\"*.yml\" --include=\"*.properties\"\ngrep -rn \"sk-\\|api_key\\|secret\" src\u002F --include=\"*.java\" --include=\"*.yml\"\n\n# Secrets (git history)\ngit secrets --scan  # if configured\n```\n\n### Common Security Findings\n\n```\n# Check for System.out.println (use logger instead)\ngrep -rn \"System\\.out\\.print\" src\u002Fmain\u002F --include=\"*.java\"\n\n# Check for raw exception messages in responses\ngrep -rn \"e\\.getMessage()\" src\u002Fmain\u002F --include=\"*.java\"\n\n# Check for wildcard CORS\ngrep -rn \"allowedOrigins.*\\*\" src\u002Fmain\u002F --include=\"*.java\"\n```\n\n## Phase 5: Lint\u002FFormat (optional gate)\n\n```bash\nmvn spotless:apply   # if using Spotless plugin\n.\u002Fgradlew spotlessApply\n```\n\n## Phase 6: Diff Review\n\n```bash\ngit diff --stat\ngit diff\n```\n\nChecklist:\n- No debugging logs left (`System.out`, `log.debug` without guards)\n- Meaningful errors and HTTP statuses\n- Transactions and validation present where needed\n- Config changes documented\n\n## Output Template\n\n```\nVERIFICATION REPORT\n===================\nBuild:     [PASS\u002FFAIL]\nStatic:    [PASS\u002FFAIL] (spotbugs\u002Fpmd\u002Fcheckstyle)\nTests:     [PASS\u002FFAIL] (X\u002FY passed, Z% coverage)\nSecurity:  [PASS\u002FFAIL] (CVE findings: N)\nDiff:      [X files changed]\n\nOverall:   [READY \u002F NOT READY]\n\nIssues to Fix:\n1. ...\n2. ...\n```\n\n## Continuous Mode\n\n- Re-run phases on significant changes or every 30–60 minutes in long sessions\n- Keep a short loop: `mvn -T 4 test` + spotbugs for quick feedback\n\n**Remember**: Fast feedback beats late surprises. Keep the gate strict—treat warnings as defects in production systems.\n","# Spring Boot Verification Loop\n\nRun before PRs, after major changes, and pre-deploy.\n\n## When to Activate\n\n- Before opening a pull request for a Spring Boot service\n- After major refactoring or dependency upgrades\n- Pre-deployment verification for staging or production\n- Running full build → lint → test → security scan pipeline\n- Validating test coverage meets thresholds\n\n## Phase 1: Build\n\n```bash\nmvn -T 4 clean verify -DskipTests\n# or\n.\u002Fgradlew clean assemble -x test\n```\n\nIf build fails, stop and fix.\n\n## Phase 2: Static Analysis\n\nMaven (common plugins):\n```bash\nmvn -T 4 spotbugs:check pmd:check checkstyle:check\n```\n\nGradle (if configured):\n```bash\n.\u002Fgradlew checkstyleMain pmdMain spotbugsMain\n```\n\n## Phase 3: Tests + Coverage\n\n```bash\nmvn -T 4 test\nmvn jacoco:report   # verify 80%+ coverage\n# or\n.\u002Fgradlew test jacocoTestReport\n```\n\nReport:\n- Total tests, passed\u002Ffailed\n- Coverage % (lines\u002Fbranches)\n\n### Unit Tests\n\nTest service logic in isolation with mocked dependencies:\n\n```java\n@ExtendWith(MockitoExtension.class)\nclass UserServiceTest {\n\n  @Mock private UserRepository userRepository;\n  @InjectMocks private UserService userService;\n\n  @Test\n  void createUser_validInput_returnsUser() {\n    var dto = new CreateUserDto(\"Alice\", \"alice@example.com\");\n    var expected = new User(1L, \"Alice\", \"alice@example.com\");\n    when(userRepository.save(any(User.class))).thenReturn(expected);\n\n    var result = userService.create(dto);\n\n    assertThat(result.name()).isEqualTo(\"Alice\");\n    verify(userRepository).save(any(User.class));\n  }\n\n  @Test\n  void createUser_duplicateEmail_throwsException() {\n    var dto = new CreateUserDto(\"Alice\", \"existing@example.com\");\n    when(userRepository.existsByEmail(dto.email())).thenReturn(true);\n\n    assertThatThrownBy(() -> userService.create(dto))\n        .isInstanceOf(DuplicateEmailException.class);\n  }\n}\n```\n\n### Integration Tests with Testcontainers\n\nTest against a real database instead of H2:\n\n```java\n@SpringBootTest\n@Testcontainers\nclass UserRepositoryIntegrationTest {\n\n  @Container\n  static PostgreSQLContainer\u003C?> postgres = new PostgreSQLContainer\u003C>(\"postgres:16-alpine\")\n      .withDatabaseName(\"testdb\");\n\n  @DynamicPropertySource\n  static void configureProperties(DynamicPropertyRegistry registry) {\n    registry.add(\"spring.datasource.url\", postgres::getJdbcUrl);\n    registry.add(\"spring.datasource.username\", postgres::getUsername);\n    registry.add(\"spring.datasource.password\", postgres::getPassword);\n  }\n\n  @Autowired private UserRepository userRepository;\n\n  @Test\n  void findByEmail_existingUser_returnsUser() {\n    userRepository.save(new User(\"Alice\", \"alice@example.com\"));\n\n    var found = userRepository.findByEmail(\"alice@example.com\");\n\n    assertThat(found).isPresent();\n    assertThat(found.get().getName()).isEqualTo(\"Alice\");\n  }\n}\n```\n\n### API Tests with MockMvc\n\nTest controller layer with full Spring context:\n\n```java\n@WebMvcTest(UserController.class)\nclass UserControllerTest {\n\n  @Autowired private MockMvc mockMvc;\n  @MockBean private UserService userService;\n\n  @Test\n  void createUser_validInput_returns201() throws Exception {\n    var user = new UserDto(1L, \"Alice\", \"alice@example.com\");\n    when(userService.create(any())).thenReturn(user);\n\n    mockMvc.perform(post(\"\u002Fapi\u002Fusers\")\n            .contentType(MediaType.APPLICATION_JSON)\n            .content(\"\"\"\n                {\"name\": \"Alice\", \"email\": \"alice@example.com\"}\n                \"\"\"))\n        .andExpect(status().isCreated())\n        .andExpect(jsonPath(\"$.name\").value(\"Alice\"));\n  }\n\n  @Test\n  void createUser_invalidEmail_returns400() throws Exception {\n    mockMvc.perform(post(\"\u002Fapi\u002Fusers\")\n            .contentType(MediaType.APPLICATION_JSON)\n            .content(\"\"\"\n                {\"name\": \"Alice\", \"email\": \"not-an-email\"}\n                \"\"\"))\n        .andExpect(status().isBadRequest());\n  }\n}\n```\n\n## Phase 4: Security Scan\n\n```bash\n# Dependency CVEs\nmvn org.owasp:dependency-check-maven:check\n# or\n.\u002Fgradlew dependencyCheckAnalyze\n\n# Secrets in source\ngrep -rn \"password\\s*=\\s*\\\"\" src\u002F --include=\"*.java\" --include=\"*.yml\" --include=\"*.properties\"\ngrep -rn \"sk-\\|api_key\\|secret\" src\u002F --include=\"*.java\" --include=\"*.yml\"\n\n# Secrets (git history)\ngit secrets --scan  # if configured\n```\n\n### Common Security Findings\n\n```\n# Check for System.out.println (use logger instead)\ngrep -rn \"System\\.out\\.print\" src\u002Fmain\u002F --include=\"*.java\"\n\n# Check for raw exception messages in responses\ngrep -rn \"e\\.getMessage()\" src\u002Fmain\u002F --include=\"*.java\"\n\n# Check for wildcard CORS\ngrep -rn \"allowedOrigins.*\\*\" src\u002Fmain\u002F --include=\"*.java\"\n```\n\n## Phase 5: Lint\u002FFormat (optional gate)\n\n```bash\nmvn spotless:apply   # if using Spotless plugin\n.\u002Fgradlew spotlessApply\n```\n\n## Phase 6: Diff Review\n\n```bash\ngit diff --stat\ngit diff\n```\n\nChecklist:\n- No debugging logs left (`System.out`, `log.debug` without guards)\n- Meaningful errors and HTTP statuses\n- Transactions and validation present where needed\n- Config changes documented\n\n## Output Template\n\n```\nVERIFICATION REPORT\n===================\nBuild:     [PASS\u002FFAIL]\nStatic:    [PASS\u002FFAIL] (spotbugs\u002Fpmd\u002Fcheckstyle)\nTests:     [PASS\u002FFAIL] (X\u002FY passed, Z% coverage)\nSecurity:  [PASS\u002FFAIL] (CVE findings: N)\nDiff:      [X files changed]\n\nOverall:   [READY \u002F NOT READY]\n\nIssues to Fix:\n1. ...\n2. ...\n```\n\n## Continuous Mode\n\n- Re-run phases on significant changes or every 30–60 minutes in long sessions\n- Keep a short loop: `mvn -T 4 test` + spotbugs for quick feedback\n\n**Remember**: Fast feedback beats late surprises. Keep the gate strict—treat warnings as defects in production systems.\n",{"name":5,"metadata":24,"description":7},{"origin":25},"ECC","main","a73152352c0612252131e5cf84e91312a6cf17dc","backend-database\u002Fspringboot-verification","https:\u002F\u002Fgithub.com\u002FHenrique1601\u002FSkiilsToIAs","https:\u002F\u002Fgithub.com\u002FHenrique1601","https:\u002F\u002Fbezerraportifolio.netlify.app\u002F","Full Stack Developer | React, Next.js, TypeScript, Node.js & IA | Construindo produtos digitais e soluções SaaS","2026-11-15 02:56:04",{"source":8,"skillName":5,"commands":35,"prompt":45,"zipAvailable":46},[36,39,42],{"tool":37,"command":38},"npx","npx skills add Henrique1601\u002FSkiilsToIAs --skill springboot-verification",{"tool":40,"command":41},"bunx","bunx skills add Henrique1601\u002FSkiilsToIAs --skill springboot-verification",{"tool":43,"command":44},"pnpm","pnpm dlx skills add Henrique1601\u002FSkiilsToIAs --skill springboot-verification","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FHenrique1601\u002FSkiilsToIAs\u002Fblob\u002Fmain\u002Fbackend-database\u002Fspringboot-verification\u002FSKILL.md",true,[],[49,56,63,71,78,85],{"skillNo":50,"name":51,"nameZh":6,"description":52,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":53,"categories":54,"keywords":55,"publishedAt":19},"01M7E2ANBW9V6AVX5JXNCEAWF8","rag-architect-agent","Agente Arquiteto de RAG, Embeddings & Busca Vetorial. Especialista em design e implementação de pipelines de Retrieval-Augmented Generation de alta fidelidade: chunking semântico, modelagem pgvector no PostgreSQL (Neon\u002FSupabase), busca híbrida (cosseno + BM25), reranking, validação via TypeSafe AI e filosofia Ponytail (anti-overengineering).","https:\u002F\u002Fgithub.com\u002FHenrique1601\u002FSkiilsToIAs\u002Fblob\u002Fmain\u002Fcustom-agents\u002Frag-architect-agent\u002FSKILL.md",[],[],{"skillNo":57,"name":58,"nameZh":6,"description":59,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":60,"categories":61,"keywords":62,"publishedAt":19},"01M7E29KKF8R02ZRGYE2MJM67G","rag-architecture-patterns","Padrões arquiteturais e implementação de pipelines RAG (Retrieval-Augmented Generation) de alta fidelidade para qualquer projeto ou sistema. Cobre chunking semântico, embeddings, busca híbrida (pgvector + BM25), reranking, validação via TypeSafe AI e filosofia Ponytail (anti-overengineering).","https:\u002F\u002Fgithub.com\u002FHenrique1601\u002FSkiilsToIAs\u002Fblob\u002Fmain\u002Fai-agents\u002Frag-architecture-patterns\u002FSKILL.md",[],[],{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":67,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":70,"publishedAt":19},"01M7CWRA8E3BJ7CPY8N8EG28J1","skill-repair","Use this to fix and re-install agent skills that have failed installation.\nThis skill provides the necessary context and permissions to surgically update\nthe `manifest.json` after a fix has been applied.","Apache-2.0","https:\u002F\u002Fgithub.com\u002FHenrique1601\u002FSkiilsToIAs\u002Fblob\u002Fmain\u002Futilities\u002Fskill-repair\u002FSKILL.md",[],[],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"publishedAt":19},"01M7CWR66FZP8FA47WVZ4Z2EXC","security-scan","Scan your Claude Code configuration (.claude\u002F directory) for security vulnerabilities, misconfigurations, and injection risks using AgentShield. Checks CLAUDE.md, settings.json, MCP servers, hooks, and agent definitions.","https:\u002F\u002Fgithub.com\u002FHenrique1601\u002FSkiilsToIAs\u002Fblob\u002Fmain\u002Futilities\u002Fsecurity-scan\u002FSKILL.md",[],[],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":19},"01M7CWR0QPY58QPTR1P759TFNG","security-review","Use this skill when adding authentication, handling user input, working with secrets, creating API endpoints, or implementing payment\u002Fsensitive features. Provides comprehensive security checklist and patterns.","https:\u002F\u002Fgithub.com\u002FHenrique1601\u002FSkiilsToIAs\u002Fblob\u002Fmain\u002Futilities\u002Fsecurity-review\u002FSKILL.md",[],[],{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":91,"publishedAt":19},"01M7CWQXCE40XWT4FZ3VWZFGDP","security-bounty-hunter","Hunt for exploitable, bounty-worthy security issues in repositories. Focuses on remotely reachable vulnerabilities that qualify for real reports instead of noisy local-only findings.","https:\u002F\u002Fgithub.com\u002FHenrique1601\u002FSkiilsToIAs\u002Fblob\u002Fmain\u002Futilities\u002Fsecurity-bounty-hunter\u002FSKILL.md",[],[]]