Skip to content

fix: add Codex skill self-test mode - #680

Merged
rafaelscosta merged 5 commits into
mainfrom
fix/issue-622-skill-tool-self-test-20260507
May 7, 2026
Merged

fix: add Codex skill self-test mode#680
rafaelscosta merged 5 commits into
mainfrom
fix/issue-622-skill-tool-self-test-20260507

Conversation

@rafaelscosta

@rafaelscosta rafaelscosta commented May 7, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Adds a deterministic --self-test mode to Codex skill validation for Skill tool driven skills.
  • Validates skill frontmatter, source-of-truth paths, greeting commands, and simulated Skill tool targets.
  • Adds the npm shortcut validate:codex-skills:self-test, unit coverage, manifest update, and Story 123.21.

Closes #622

Validation

  • node -c .aiox-core/infrastructure/scripts/codex-skills-sync/validate.js
  • npm test -- tests/unit/codex-skills-validate.test.js --runInBand --forceExit
  • npm run validate:codex-skills:self-test
  • npm run generate:manifest
  • npm run validate:manifest
  • npm run lint -- --quiet
  • npm run typecheck
  • npm run validate:parity
  • npm run test:ci

Summary by CodeRabbit

  • New Features

    • Added a deterministic self-test mode for Codex skills validation to verify skill metadata, source references, greeting commands, and tool-target payloads without live tool pings.
  • Documentation

    • Updated README and added a story documenting the self-test command, acceptance criteria, and usage.
  • Tests

    • Expanded unit tests to cover self-test success/failure, directory resolution, and payload normalization.
  • Chores

    • Refreshed registry/manifest timestamps and added an npm script to run the self-test.

@vercel

vercel Bot commented May 7, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
aiox-core Ready Ready Preview, Comment May 7, 2026 9:06pm

Request Review

@coderabbitai

coderabbitai Bot commented May 7, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 9f3fba41-651e-49b9-8305-91adc7865096

📥 Commits

Reviewing files that changed from the base of the PR and between cdcf536 and e56353f.

📒 Files selected for processing (3)
  • .aiox-core/data/entity-registry.yaml
  • .aiox-core/infrastructure/scripts/codex-skills-sync/validate.js
  • .aiox-core/install-manifest.yaml
✅ Files skipped from review due to trivial changes (1)
  • .aiox-core/install-manifest.yaml
🚧 Files skipped from review as they are similar to previous changes (1)
  • .aiox-core/infrastructure/scripts/codex-skills-sync/validate.js

Walkthrough

Adds a deterministic --self-test mode to the Codex skills validator: helpers parse SKILL.md frontmatter and build/normalize deterministic Skill payloads; validateCodexSkills runs per-skill self-tests and returns a selfTests array; npm script, README, story doc, manifest, and unit tests were added/updated.

Changes

Codex Skills Self-Test Implementation

Layer / File(s) Summary
Self-Test Helper Functions
.aiox-core/infrastructure/scripts/codex-skills-sync/validate.js
New functions parseSkillFrontmatter, createSkillToolSelfTestPayload, normalizeSkillToolTarget, extractCanonicalAgentPath, and runSkillSelfTests added; imports js-yaml for frontmatter parsing.
Validator Core Integration
.aiox-core/infrastructure/scripts/codex-skills-sync/validate.js
validateCodexSkills option resolution updated to support selfTest; initializes selfTests in early-failure shapes, runs runSkillSelfTests when enabled, aggregates per-skill errors into errors, extends the returned result with selfTests, updates human report, and exports the self-test helpers.
CLI and Script Wiring
package.json, .aiox-core/infrastructure/scripts/codex-skills-sync/README.md
New npm script validate:codex-skills:self-test invoking the validator with --strict --self-test; CLI arg parsing recognizes --self-test; README documents the self-test command and simulated activation checks (frontmatter, source-of-truth, greeting).
Unit Tests
tests/unit/codex-skills-validate.test.js
Tests added/updated to cover successful self-tests across generated agents, failure when a skill references a missing source path, projectRoot-derived defaults with selfTest, normalizeSkillToolTarget behavior, and stable result shape when skillsDir is missing.
Documentation & Metadata
docs/stories/epic-123/STORY-123.21-codex-skill-tool-self-test.md, .aiox-core/data/entity-registry.yaml, .aiox-core/install-manifest.yaml
Story doc added; entity registry metadata.lastUpdated and validate.js checksum/lastVerified updated; install-manifest hashes and sizes refreshed for changed files.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested reviewers

  • Pedrovaleriolopez
  • oalanicolas
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 41.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: adding a deterministic self-test mode for Codex skills, which aligns with the PR's primary objective.
Linked Issues check ✅ Passed The PR implements the core requirement from #622: a deterministic self-test mode for Skill tool-based skills with validation of frontmatter, source paths, and simulated tool targets.
Out of Scope Changes check ✅ Passed All changes are directly related to implementing the self-test mode for Codex skills as specified in #622; no unrelated modifications detected.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/issue-622-skill-tool-self-test-20260507

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions Bot added area: agents Agent system related area: workflows Workflow system related squad mcp type: test Test coverage and quality area: core Core framework (.aios-core/core/) area: installer Installer and setup (packages/installer/) area: synapse SYNAPSE context engine area: cli CLI tools (bin/, packages/aios-pro-cli/) area: pro Pro features (pro/) area: health-check Health check system area: docs Documentation (docs/) area: devops CI/CD, GitHub Actions (.github/) labels May 7, 2026
@github-actions

github-actions Bot commented May 7, 2026

Copy link
Copy Markdown
Contributor

📊 Coverage Report

Coverage report not available

📈 Full coverage report available in Codecov


Generated by PR Automation (Story 6.1)

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
.aiox-core/infrastructure/scripts/codex-skills-sync/validate.js (1)

174-181: 💤 Low value

Self-test payload round-trip checks are tautological and can never fail.

createSkillToolSelfTestPayload(item.skillId) sets input.skill = item.skillId; normalizeSkillToolTarget resolves input.skill first — so target is always item.skillId and expectedIds.has(target) is always true. The error branches on lines 176–181 are unreachable dead code that adds noise to future readers.

🧹 Suggested cleanup
-    const payload = createSkillToolSelfTestPayload(item.skillId);
-    const target = normalizeSkillToolTarget(payload);
-    if (target !== item.skillId) {
-      errors.push(`self-test Skill payload target mismatch: expected "${item.skillId}", got "${target}"`);
-    }
-    if (!expectedIds.has(target)) {
-      errors.push(`self-test Skill payload target is not a generated skill: ${target || '<empty>'}`);
-    }

If the intent is to guard against future refactoring of normalizeSkillToolTarget breaking this contract, a unit test on the exported function (as already exists in the test file) is a better place for that assertion than runtime validation logic.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.aiox-core/infrastructure/scripts/codex-skills-sync/validate.js around lines
174 - 181, The two runtime checks using createSkillToolSelfTestPayload(...) and
normalizeSkillToolTarget(...) are tautological (normalizeSkillToolTarget reads
input.skill which createSkillToolSelfTestPayload sets), so remove the
unreachable error branches that push into errors (the comparisons against
item.skillId and expectedIds.has(target)). Instead either delete those lines or
replace them with a brief comment referencing the existing unit test for
normalizeSkillToolTarget; if you want to keep a guard, move the assertions into
a unit test rather than runtime validation. Ensure references to
createSkillToolSelfTestPayload, normalizeSkillToolTarget, expectedIds,
item.skillId and the errors array are handled accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@tests/unit/codex-skills-validate.test.js`:
- Around line 8-11: The test uses relative requires for validateCodexSkills and
normalizeSkillToolTarget (and the pre-existing syncSkills import); update these
to use the project's absolute import paths instead of ../../ relative paths so
they conform to the absolute-imports guideline—replace the require calls that
load validateCodexSkills, normalizeSkillToolTarget (and syncSkills) with their
corresponding absolute module specifiers according to the project module map so
the test imports these symbols using absolute paths.
- Around line 79-81: The test currently assumes result.selfTests.find(...)
returns an object and accesses .ok, which can throw if undefined; update the
test to first capture the result of result.selfTests.find(test => test.skillId
=== 'aiox-dev') into a variable (e.g., selfTest), assert that this variable is
defined/not null, then assert selfTest.ok is false so failures are readable and
won't raise a TypeError.

---

Nitpick comments:
In @.aiox-core/infrastructure/scripts/codex-skills-sync/validate.js:
- Around line 174-181: The two runtime checks using
createSkillToolSelfTestPayload(...) and normalizeSkillToolTarget(...) are
tautological (normalizeSkillToolTarget reads input.skill which
createSkillToolSelfTestPayload sets), so remove the unreachable error branches
that push into errors (the comparisons against item.skillId and
expectedIds.has(target)). Instead either delete those lines or replace them with
a brief comment referencing the existing unit test for normalizeSkillToolTarget;
if you want to keep a guard, move the assertions into a unit test rather than
runtime validation. Ensure references to createSkillToolSelfTestPayload,
normalizeSkillToolTarget, expectedIds, item.skillId and the errors array are
handled accordingly.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 83463c3e-8190-4656-97df-7da0b04aae5e

📥 Commits

Reviewing files that changed from the base of the PR and between afbf7c0 and e9aed30.

📒 Files selected for processing (7)
  • .aiox-core/data/entity-registry.yaml
  • .aiox-core/infrastructure/scripts/codex-skills-sync/README.md
  • .aiox-core/infrastructure/scripts/codex-skills-sync/validate.js
  • .aiox-core/install-manifest.yaml
  • docs/stories/epic-123/STORY-123.21-codex-skill-tool-self-test.md
  • package.json
  • tests/unit/codex-skills-validate.test.js

Comment thread tests/unit/codex-skills-validate.test.js Outdated
Comment thread tests/unit/codex-skills-validate.test.js

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.aiox-core/infrastructure/scripts/codex-skills-sync/validate.js:
- Around line 179-187: The code currently only checks that
extractCanonicalAgentPath(content) exists on disk; instead construct the
expected canonical relative path for the current item using item.filename (the
agents source path under the development agents directory), assert
canonicalAgentPath === expectedRelativePath and push an error if they differ,
and then (optionally) keep the fs.existsSync(resolved.projectRoot +
canonicalAgentPath) check as a secondary guard; update the block that references
extractCanonicalAgentPath, canonicalAgentPath, resolved.projectRoot, errors, and
item.filename to perform this equality check before the existence check.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 292e2ea6-fa83-4717-a880-bd9ba3e3820c

📥 Commits

Reviewing files that changed from the base of the PR and between e9aed30 and 012a1fe.

📒 Files selected for processing (3)
  • .aiox-core/data/entity-registry.yaml
  • .aiox-core/infrastructure/scripts/codex-skills-sync/validate.js
  • .aiox-core/install-manifest.yaml
🚧 Files skipped from review as they are similar to previous changes (1)
  • .aiox-core/data/entity-registry.yaml

Comment thread .aiox-core/infrastructure/scripts/codex-skills-sync/validate.js

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.aiox-core/infrastructure/scripts/codex-skills-sync/validate.js (1)

254-257: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Early return omits selfTests from the return shape.

The fast-exit path at line 256 (when skillsDir is missing) does not include selfTests. The new version replaces the safe functions with load and dump, both safe by default now. While formatHumanReport guards against it with result.selfTests &&, external callers relying on the documented return shape (e.g., result.selfTests.length) would receive a TypeError on this path.

🛠️ Proposed fix
-    return { ok: false, checked: 0, expected: 0, errors, warnings, missing: [], orphaned: [], ignored: [] };
+    return { ok: false, checked: 0, expected: 0, errors, warnings, missing: [], orphaned: [], legacy: [], ignored: [], selfTests: [] };
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.aiox-core/infrastructure/scripts/codex-skills-sync/validate.js around lines
254 - 257, The early return when resolved.skillsDir is missing omits the
selfTests field causing callers expecting result.selfTests to crash; update the
fast-exit return in validate.js (the block checking
fs.existsSync(resolved.skillsDir)) to include selfTests (an empty array) in the
returned object so the return shape matches the normal path (keep existing
errors, warnings, missing, orphaned, ignored and add selfTests: []). Ensure you
update the return value used by formatHumanReport and any external callers that
access result.selfTests.
🧹 Nitpick comments (1)
.aiox-core/infrastructure/scripts/codex-skills-sync/validate.js (1)

167-204: ⚡ Quick win

Payload roundtrip check produces cascading errors and false confidence.

Two related problems:

  1. Cascading errors on name mismatch. When frontmatter.data.name !== item.skillId, the frontmatter error at line 174 is the root cause. Because declaredSkillId is set to the wrong name, lines 199-200 and 202-203 each fire again for the same mismatched name — resulting in up to 3 errors about a single field.

  2. False confidence on parse failure. When frontmatter.error is set, declaredSkillId falls back to item.skillId (line 168 initializer). The payload checks then trivially pass (target === item.skillId), silently reporting no issue even though the frontmatter is broken.

♻️ Proposed fix
-    const payload = createSkillToolSelfTestPayload(declaredSkillId);
-    const target = normalizeSkillToolTarget(payload);
-    if (target !== item.skillId) {
-      errors.push(`self-test Skill payload target mismatch: expected "${item.skillId}", got "${target}"`);
-    }
-    if (!expectedIds.has(target)) {
-      errors.push(`self-test Skill payload target is not a generated skill: ${target || '<empty>'}`);
-    }
+    if (!frontmatter.error) {
+      const payload = createSkillToolSelfTestPayload(declaredSkillId);
+      const target = normalizeSkillToolTarget(payload);
+      if (target !== item.skillId) {
+        errors.push(`self-test Skill payload target mismatch: expected "${item.skillId}", got "${target}"`);
+      } else if (!expectedIds.has(target)) {
+        errors.push(`self-test Skill payload target is not a generated skill: ${target || '<empty>'}`);
+      }
+    }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.aiox-core/infrastructure/scripts/codex-skills-sync/validate.js around lines
167 - 204, The current logic causes duplicate errors and a false-pass when
frontmatter parsing fails: fix by only running the payload roundtrip
(createSkillToolSelfTestPayload + normalizeSkillToolTarget + expectedIds checks)
when frontmatter parsed successfully (frontmatter.error is falsy) AND
frontmatter.data.name equals item.skillId; set declaredSkillId from
frontmatter.data.name only in that success path (leave it undefined/null
otherwise) and skip the payload/target comparisons (the checks that reference
declaredSkillId, createSkillToolSelfTestPayload, normalizeSkillToolTarget, and
expectedIds) when parsing failed or the frontmatter name mismatches to avoid
cascading/duplicate errors.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.aiox-core/infrastructure/scripts/codex-skills-sync/validate.js:
- Around line 140-147: The default skillsDir is computed from process.cwd()
before options are merged, so a caller-provided projectRoot is ignored; modify
runSkillSelfTests to compute skillsDir after merging options (i.e., build
resolved first with projectRoot from options/default, then set
resolved.skillsDir = resolved.skillsDir || path.join(resolved.projectRoot,
'.codex', 'skills')) so skillsDir respects a supplied projectRoot; update
references to resolved.skillsDir and keep expected mapping logic (expectedIds)
unchanged.
- Around line 206-208: The self-test greeting-command check duplicates the same
content.includes('generate-greeting.js ${item.agentId}') validation already
performed by validateSkillContent, causing duplicate errors when selfTest is
true; remove (or skip) the duplicate check from runSkillSelfTests by deleting
the if (!content.includes(...)) errors.push(...) branch in runSkillSelfTests (or
guard it with a condition that skips it when selfTest mode is active) so only
validateSkillContent performs this check.

---

Outside diff comments:
In @.aiox-core/infrastructure/scripts/codex-skills-sync/validate.js:
- Around line 254-257: The early return when resolved.skillsDir is missing omits
the selfTests field causing callers expecting result.selfTests to crash; update
the fast-exit return in validate.js (the block checking
fs.existsSync(resolved.skillsDir)) to include selfTests (an empty array) in the
returned object so the return shape matches the normal path (keep existing
errors, warnings, missing, orphaned, ignored and add selfTests: []). Ensure you
update the return value used by formatHumanReport and any external callers that
access result.selfTests.

---

Nitpick comments:
In @.aiox-core/infrastructure/scripts/codex-skills-sync/validate.js:
- Around line 167-204: The current logic causes duplicate errors and a
false-pass when frontmatter parsing fails: fix by only running the payload
roundtrip (createSkillToolSelfTestPayload + normalizeSkillToolTarget +
expectedIds checks) when frontmatter parsed successfully (frontmatter.error is
falsy) AND frontmatter.data.name equals item.skillId; set declaredSkillId from
frontmatter.data.name only in that success path (leave it undefined/null
otherwise) and skip the payload/target comparisons (the checks that reference
declaredSkillId, createSkillToolSelfTestPayload, normalizeSkillToolTarget, and
expectedIds) when parsing failed or the frontmatter name mismatches to avoid
cascading/duplicate errors.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 7c7831b3-5d02-4f04-9609-e8eba510901d

📥 Commits

Reviewing files that changed from the base of the PR and between 012a1fe and a2ac8a7.

📒 Files selected for processing (4)
  • .aiox-core/data/entity-registry.yaml
  • .aiox-core/infrastructure/scripts/codex-skills-sync/validate.js
  • .aiox-core/install-manifest.yaml
  • tests/unit/codex-skills-validate.test.js
✅ Files skipped from review due to trivial changes (1)
  • .aiox-core/install-manifest.yaml
🚧 Files skipped from review as they are similar to previous changes (1)
  • tests/unit/codex-skills-validate.test.js

Comment thread .aiox-core/infrastructure/scripts/codex-skills-sync/validate.js
Comment thread .aiox-core/infrastructure/scripts/codex-skills-sync/validate.js Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.aiox-core/infrastructure/scripts/codex-skills-sync/validate.js:
- Around line 200-208: The else-if checking expectedIds.has(target) is dead
because expectedIds is built from resolved.expected and the loop compares
against item.skillId, so when target === item.skillId it will always be in
expectedIds; update the logic in the canRoundtripSkillPayload block (around
createSkillToolSelfTestPayload and normalizeSkillToolTarget) to first validate
that target exists in expectedIds (if (!expectedIds.has(target)) push the "not a
generated skill" error), and only then check for mismatch with item.skillId
(else if (target !== item.skillId) push the "payload target mismatch" error), or
simply remove the unreachable else-if if you prefer; adjust the order in that
block so existence is checked before equality.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 6619a247-3cf9-4086-b055-48f88fc1696b

📥 Commits

Reviewing files that changed from the base of the PR and between a2ac8a7 and cdcf536.

📒 Files selected for processing (4)
  • .aiox-core/data/entity-registry.yaml
  • .aiox-core/infrastructure/scripts/codex-skills-sync/validate.js
  • .aiox-core/install-manifest.yaml
  • tests/unit/codex-skills-validate.test.js
✅ Files skipped from review due to trivial changes (1)
  • .aiox-core/install-manifest.yaml

Comment thread .aiox-core/infrastructure/scripts/codex-skills-sync/validate.js
@rafaelscosta

Copy link
Copy Markdown
Collaborator Author

DevOps merge attempt blocked by CODEOWNERS.\n\nCurrent head: e56353f\nValidation: all required CI checks pass, including ESLint, TypeScript, Jest Node 18/20/22/24/25, Validation Summary, Coverage Report, and CodeRabbit approval.\n\nAttempted merge paths:\n- gh pr merge 680 --squash --admin --delete-branch\n- REST PUT /repos/SynkraAI/aiox-core/pulls/680/merge with squash and fixed head SHA\n\nBoth were blocked server-side by: Waiting on code owner review from Pedrovaleriolopez and/or oalanicolas.\n\n@Pedrovaleriolopez @oalanicolas please review/approve so this can be merged. Closes #622.

@rafaelscosta
rafaelscosta merged commit b1d2972 into main May 7, 2026
40 checks passed
@rafaelscosta
rafaelscosta deleted the fix/issue-622-skill-tool-self-test-20260507 branch May 7, 2026 21:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: agents Agent system related area: cli CLI tools (bin/, packages/aios-pro-cli/) area: core Core framework (.aios-core/core/) area: devops CI/CD, GitHub Actions (.github/) area: docs Documentation (docs/) area: health-check Health check system area: installer Installer and setup (packages/installer/) area: pro Pro features (pro/) area: synapse SYNAPSE context engine area: workflows Workflow system related mcp squad type: test Test coverage and quality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

stress-test: modo self-test para skills baseadas em Skill tool

1 participant