skills/.system/guicedee-inject/SKILL.md
Bootstrap and manage the GuicedEE runtime engine: classpath scanning, Guice injector creation, lifecycle hooks, logging configuration, job pools, and module registration. Use when wiring up a GuicedEE application, configuring classpath scanning SPIs, setting up Log4j2 logging with LogUtils or @InjectLogger, managing JobService pools, implementing lifecycle hooks (IGuicePreStartup, IGuiceModule, IGuicePostStartup, IGuicePreDestroy), or troubleshooting the DI bootstrap sequence.
npx skillsauth add guicedee/ai-rules guicedee-injectInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
The runtime engine that classpath-scans, creates the Guice injector, and manages the full startup/shutdown lifecycle.
GuiceContext is a singleton that orchestrates everything. Call inject() once — it discovers SPIs, scans, builds the injector, and runs lifecycle hooks:
IGuiceConfigurator → ClassGraph scan → IGuicePreStartup → Injector created → IGuicePostStartup
↓
IGuicePreDestroy (shutdown)
com.guicedee:inject dependency.IGuiceContext.registerModuleForScanning.add("my.app");
IGuiceContext.instance().inject();
module-info.java:
requires com.guicedee.guicedinjection;opens injection packages to com.google.guiceopens DTO packages to com.fasterxml.jackson.databindprovides every SPI implementationmodule-info.java and META-INF/services/.Implement IGuiceModule and register via SPI:
public class AppModule extends AbstractModule implements IGuiceModule<AppModule> {
@Override
protected void configure() {
bind(Greeter.class).to(DefaultGreeter.class);
}
}
// module-info.java
provides com.guicedee.client.services.lifecycle.IGuiceModule with my.app.AppModule;
| Hook | When it runs | Return |
|---|---|---|
| IGuiceConfigurator | First — configures GuiceConfig before scanning | IGuiceConfig<?> |
| IGuicePreStartup | After scan, before injector — grouped by sortOrder() | List<Future<Boolean>> |
| IGuiceModule | During injector creation — standard Guice module | — |
| IGuicePostStartup | After injector is ready — async, grouped by sortOrder() | List<Uni<Boolean>> |
| IGuicePreDestroy | On shutdown — cleanup resources | void |
All hooks extend IDefaultService<J> (CRTP); override sortOrder() to control execution order and enabled() to conditionally skip.
LogUtils — programmatic setupLogUtils.addHighlightedConsoleLogger(); // ANSI console (local dev)
LogUtils.addConsoleLogger(Level.INFO); // plain console
LogUtils.addFileRollingLogger("app", "logs"); // rolling file (100 MB / daily)
Logger audit = LogUtils.getSpecificRollingLogger("audit", "logs/audit", null, false);
When CLOUD env var is set, layouts auto-switch to compact JSON.
Set via environment: GUICEDEE_LOG_LEVEL, LOG_LEVEL, DEBUG=true, or TRACE=true.
Programmatic: GuiceContext.setDefaultLogLevel(Level.INFO).
Virtual-thread-backed executor pools with graceful shutdown:
JobService jobs = JobService.INSTANCE;
jobs.registerJob("import", 100);
jobs.addJob("import", () -> processFile(file));
jobs.registerPollingJob("heartbeat", () -> ping(), 0, 30, TimeUnit.SECONDS);
Pools auto-shutdown via IGuicePreDestroy.
inject() recursively during build — use IGuicePostStartup instead.GuiceContext instance per JVM.module-info.java + META-INF/services/).opens to com.google.guice.IGuiceContext.registerModuleForScanning.add("my.module") must be called before instance().IDefaultService<J> (CRTP) and override sortOrder().references/classpath-scanning.md — scanner SPI interfaces, GuiceConfig options, module/JAR/package filtering.references/lifecycle-logging.md — lifecycle hook details, @InjectLogger attributes, LogUtils API, Log4JConfigurator SPI, JobService full API.development
Install Codex skills into $CODEX_HOME/skills from a curated list or a GitHub repo path. Use when a user asks to list installable skills, install a curated skill, or install a skill from another repo (including private repos).
tools
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Codex's capabilities with specialized knowledge, workflows, or tool integrations.
development
WebAwesome icon integration for JWebMP — modern, open-source icon library. Provides 1,500+ icons with solid/regular styles, sizing, rotation, animation, and CSS utilities. Drop-in FontAwesome alternative with fresh designs. Use when working with WebAwesome icons, modern icon designs, or as FontAwesome alternative in JWebMP applications.
development
WebAwesome Pro integration for JWebMP with premium icons and features. Extends jwebmp-webawesome with additional styles, premium icons, and advanced features. Use when working with WebAwesome Pro icons or premium WebAwesome features in JWebMP applications.