Bug Description
When the skill curator/consolidation workflow replaces a set of narrow skills with umbrella skills, scheduled cron jobs that reference the old skill names can keep stale skills entries.
On the next cron execution, Hermes reports warnings such as:
Skill(s) not found and skipped: <old-skill-a>, <old-skill-b>, <old-skill-c>
The job may continue, but it starts without the intended procedural context unless the cron definition is manually edited.
This looks related to the scenario addressed by #18253, but the behavior is still observable after umbrella-skill consolidation in a live cron setup.
Steps to Reproduce
- Create or have an existing cron job with attached skills:
skills: [old-skill-a, old-skill-b, old-skill-c]
- Run skill curation/consolidation so these skills are archived/absorbed into a new umbrella skill, for example:
old-skill-a -> umbrella-skill
old-skill-b -> umbrella-skill
old-skill-c -> umbrella-skill
- List the active skills: the old names are no longer resolvable as top-level skills.
- Let the cron run, or trigger it manually.
Expected Behavior
After consolidation, cron job skill references should be migrated automatically or flagged with an actionable migration report.
Possible acceptable behaviors:
- rewrite cron
skills references from removed skills to the correct umbrella skill(s);
- preserve aliases for archived skill names so existing crons keep loading the umbrella context;
- block/require approval before archiving a skill that is referenced by an enabled cron;
- emit a curator report listing every cron that will need a skill-reference migration before any mutation happens.
Actual Behavior
The cron keeps stale skill names and logs/skips them at runtime:
Skill(s) not found and skipped: <old-skill-a>, <old-skill-b>, <old-skill-c>
This creates a silent quality/regression risk for scheduled jobs: the cron may still finish with ok, but it did not receive the procedural context it was configured to use.
Why This Matters
Cron jobs are unattended by design. A missing skill warning can be easy to miss, and a job can still complete successfully while running with weaker guidance than intended.
This is especially risky for jobs that perform publishing, posting, reporting, or other external side effects where the attached skills encode guardrails and QA rules.
Related
Environment
Observed on a normal Hermes Agent install with recurring cron jobs and skill curator/umbrella-skill consolidation. No install-specific paths, private skill names, or private cron content are included here.
Bug Description
When the skill curator/consolidation workflow replaces a set of narrow skills with umbrella skills, scheduled cron jobs that reference the old skill names can keep stale
skillsentries.On the next cron execution, Hermes reports warnings such as:
The job may continue, but it starts without the intended procedural context unless the cron definition is manually edited.
This looks related to the scenario addressed by #18253, but the behavior is still observable after umbrella-skill consolidation in a live cron setup.
Steps to Reproduce
Expected Behavior
After consolidation, cron job skill references should be migrated automatically or flagged with an actionable migration report.
Possible acceptable behaviors:
skillsreferences from removed skills to the correct umbrella skill(s);Actual Behavior
The cron keeps stale skill names and logs/skips them at runtime:
This creates a silent quality/regression risk for scheduled jobs: the cron may still finish with
ok, but it did not receive the procedural context it was configured to use.Why This Matters
Cron jobs are unattended by design. A missing skill warning can be easy to miss, and a job can still complete successfully while running with weaker guidance than intended.
This is especially risky for jobs that perform publishing, posting, reporting, or other external side effects where the attached skills encode guardrails and QA rules.
Related
Environment
Observed on a normal Hermes Agent install with recurring cron jobs and skill curator/umbrella-skill consolidation. No install-specific paths, private skill names, or private cron content are included here.