This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/master by this push:
     new 9a81021e1c chore: migrate Cursor commands to skills, remove AI_CONTINUE
9a81021e1c is described below

commit 9a81021e1c383baf66ebd1c37209298b23be6bab
Author: James Bognar <[email protected]>
AuthorDate: Sun Feb 22 14:23:13 2026 -0500

    chore: migrate Cursor commands to skills, remove AI_CONTINUE
---
 .cursor/skills/push/SKILL.md |  24 ++++++++++
 .cursor/skills/todo/SKILL.md |  20 ++++++++
 @AI_CONTINUE.md              | 112 -------------------------------------------
 3 files changed, 44 insertions(+), 112 deletions(-)

diff --git a/.cursor/skills/push/SKILL.md b/.cursor/skills/push/SKILL.md
new file mode 100644
index 0000000000..72f5cb676c
--- /dev/null
+++ b/.cursor/skills/push/SKILL.md
@@ -0,0 +1,24 @@
+---
+name: push
+description: Push Changes
+disable-model-invocation: true
+---
+# Push Changes
+
+Run the Juneau push script to build, test, commit, and push changes. You will 
determine the commit message yourself based on the staged/changed files.
+
+## Steps
+
+1. **Inspect changes**: Run `git status` and `git diff --staged` (or `git 
diff` if nothing staged) to see what has changed.
+2. **Determine commit message**: Based on the changes, craft a clear, 
descriptive commit message. Follow conventional commit style when appropriate 
(e.g., `fix:`, `feat:`, `refactor:`, `docs:`). Keep it concise but specific.
+3. **Run push script**: Execute from the project root (master/):
+
+   ```
+   python3 scripts/push.py "YOUR_COMMIT_MESSAGE"
+   ```
+
+   Use `--skip-tests` only for documentation-only changes. Do not use 
`--dry-run` unless the user asks.
+
+4. **Report result**: Summarize what was committed and pushed, or report any 
failures.
+
+Do not ask the user for the commit message—determine it from the changes 
yourself.
diff --git a/.cursor/skills/todo/SKILL.md b/.cursor/skills/todo/SKILL.md
new file mode 100644
index 0000000000..d67a993450
--- /dev/null
+++ b/.cursor/skills/todo/SKILL.md
@@ -0,0 +1,20 @@
+---
+name: todo
+description: Add to TODO
+disable-model-invocation: true
+---
+# Add to TODO
+
+Add an entry to `TODO.md` in the project root.
+
+## Steps
+
+1. **Get the TODO text**: Use the text the user provides after `/todo` as the 
new TODO entry. If no text is given, ask what they would like to add.
+2. **Read TODO.md**: Check the current format and existing entries.
+3. **Add the entry**: Append a new bullet to the list, matching the existing 
format:
+   ```
+   - [description of the TODO]
+   ```
+4. **Confirm**: Tell the user the entry was added.
+
+Keep the description clear and actionable. Do not add TODO-# identifiers to 
the list—those are only used when referencing items for "work on TODO-X" 
commands.
diff --git a/@AI_CONTINUE.md b/@AI_CONTINUE.md
deleted file mode 100644
index 4662485bfe..0000000000
--- a/@AI_CONTINUE.md
+++ /dev/null
@@ -1,112 +0,0 @@
-# SonarLint System.err/out Replacement - Continuation Guide
-
-## Current Status
-
-We are working on resolving SonarLint naming convention and code quality 
issues, primarily by replacing `System.err` and `System.out` calls with 
`org.apache.juneau.commons.logging.Logger` instances, or by adding 
`@SuppressWarnings` annotations where direct console output is intentional.
-
-## What We've Done
-
-### Completed Replacements (System.err/out → Logger)
-
-1. **BasicSwaggerProviderSession.java**: Replaced `System.err.println` with 
`LOG.warning()`
-2. **Microservice.java**: Replaced `System.err.println` with 
`getLogger().warning()`
-3. **RestContext.java**: 
-   - Replaced `System.err.println` with `LOG.warning()`
-   - Ensured `createLogger` returns `org.apache.juneau.commons.logging.Logger`
-   - Registered logger under both `Logger.class` (Juneau) and 
`java.util.logging.Logger.class` in bean store for compatibility
-4. **ThrowableUtils.java**: Added `LOG.warning()` alongside existing 
`printStackTrace` call
-5. **Utils.java**: Replaced `System.out.println` with 
`Logger.getLogger(Utils.class).info()`
-6. **WriterSerializer.java**: Replaced `System.out.println` with 
`Logger.getLogger(WriterSerializer.class).info()`
-7. **SystemUtils.java**: Replaced `System.out.println` in shutdown hook with 
`LOG.info()`
-8. **Example Files**: Replaced `System.out.println`/`System.err.println` with 
`Logger.getLogger(ClassName.class).info()` in:
-   - `App.java`, `AtomHtmlExample.java`, `HtmlComplexExample.java`, 
`HtmlSimpleExample.java`
-   - `JsonComplexExample.java`, `JsonConfigurationExample.java`, 
`JsonSimpleExample.java`
-   - `OapiExample.java`, `SvlExample.java`, `XmlComplexExample.java`, 
`XmlConfigurationExample.java`, `XmlSimpleExample.java`
-   - `UonComplexExample.java`, `UonExample.java`, `GitControl.java`
-
-### Completed Suppressions (Intentional Console Output)
-
-1. **Assertion.java**: 
-   - Reverted Logger changes (direct console output is intentional for 
assertion error output)
-   - Added class-level `@SuppressWarnings({"java:S106", "java:S108"})`
-2. **Console.java**: 
-   - Reverted Logger changes (direct console output is intentional for console 
utility)
-   - Added class-level `@SuppressWarnings({"java:S106", "java:S108"})`
-3. **PredicateUtils.java**: 
-   - Reverted Logger changes (tests capture `System.err` output)
-   - Added class-level `@SuppressWarnings("java:S106")`
-
-### Files Left Unchanged (Intentional)
-
-- **RestClient.java**: Assignment of `System.err` to `console` field is 
intentional for direct console output, not logging
-
-## Key Technical Details
-
-### Logger Type Consistency
-- **Primary Logger**: `org.apache.juneau.commons.logging.Logger` (extends 
`java.util.logging.Logger`)
-- **Bean Store Registration**: In `RestContext`, logger must be registered 
under both:
-  - `Logger.class` (Juneau logger)
-  - `java.util.logging.Logger.class` (for `CallLogger` compatibility)
-
-### SonarLint Rules Addressed
-- **java:S106**: Standard outputs should not be used directly for logging
-- **java:S108**: Nested blocks of code should not be left empty
-
-### Pattern for Logger Usage
-```java
-import org.apache.juneau.commons.logging.Logger;
-
-private static final Logger LOG = Logger.getLogger(ClassName.class);
-
-// For warnings:
-LOG.warning("Message: {}", arg);
-LOG.warning(throwable, "Message");
-
-// For info:
-LOG.info("Message: {}", arg);
-Logger.getLogger(ClassName.class).info("Message");
-```
-
-## Issues Resolved
-
-1. **Type Mismatch in RestContext**: Fixed by ensuring `createLogger` returns 
`org.apache.juneau.commons.logging.Logger` and registering under both logger 
types
-2. **Test Failure in PredicateUtils_Test**: Fixed by reverting to 
`System.err.println()` (tests capture `System.err` output) and adding 
suppression
-3. **Import Issues**: Added `import org.apache.juneau.commons.logging.Logger;` 
to `RestObject.java` and `RestServlet.java`
-
-## Current State
-
-All explicit requests to replace `System.out`/`err` with loggers or 
revert/suppress have been completed. All compilation errors have been fixed. 
The codebase now uses structured logging 
(`org.apache.juneau.commons.logging.Logger`) for logging purposes, while 
preserving direct console output where it's intentional (utility classes, 
tests, etc.).
-
-## Files Modified
-
-### Core Files
-- 
`juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.java`
-- 
`juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java`
-- 
`juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/RestObject.java`
-- 
`juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/RestServlet.java`
-- 
`juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/Microservice.java`
-- 
`juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/utils/ThrowableUtils.java`
-- 
`juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/utils/Utils.java`
-- 
`juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializer.java`
-- 
`juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/utils/SystemUtils.java`
-
-### Suppressed Files (Intentional Console Output)
-- 
`juneau-core/juneau-assertions/src/main/java/org/apache/juneau/assertions/Assertion.java`
-- 
`juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/io/Console.java`
-- 
`juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/utils/PredicateUtils.java`
-
-### Example Files
-- Multiple example files in `juneau-examples/` directories
-
-## Next Steps
-
-1. **Verify All Changes**: Run tests to ensure all changes work correctly
-2. **Check SonarLint**: Verify that SonarLint warnings are resolved
-3. **Continue with Other SonarLint Issues**: If there are other SonarLint 
issues to address, proceed with those
-
-## Notes
-
-- Always use `org.apache.juneau.commons.logging.Logger` for logging (not 
`java.util.logging.Logger`)
-- When direct console output is intentional (utilities, tests), use 
`@SuppressWarnings("java:S106")` at class level
-- Tests that capture `System.err` output require `System.err.println()` to 
remain (use suppression instead of replacement)
-- Logger registration in bean stores may need both Juneau and standard Java 
logger types for compatibility

Reply via email to