Hey @trieloff 👋
I ran your skills through `tessl skill review` at work and found some targeted improvements for the Cloud Service replication skill. Here's the before/after:
| Skill | Before | After | Change |
|-------|--------|-------|--------|
| replication (cloud-service) | 52% | 87% | +35% |
I picked this skill because it had the most room to grow across the repo — the baseline was 52%, lowest alongside `replication-orchestrator` (6.5 LTS). Since Cloud Service is the forward-looking runtime, it felt like the highest-signal place to contribute.
<details>
<summary>Changes made</summary>
**Description improvements (biggest impact — 40% → 100%):**
- Rewrote frontmatter description from a generic 2-line summary to a specific, action-oriented description listing concrete capabilities (publish, deactivate, delete, bulk activation, preview-tier targeting, sync/async, status checks, permissions, workflow steps, event handling)
- Added explicit "Use when..." clause with seven trigger scenarios covering natural language terms users would say ("publish pages", "activate content", "check replication status")
- Switched description from YAML block scalar to quoted string format
- Added metadata.category field
**Content improvements (42% → 73%):**
- Removed "Architecture: How Replication Works in Cloud Service" section — Claude already understands AEM's Sling Content Distribution pipeline
- Removed ReplicationActionType values table — these are self-evident from the linked Javadoc and the code examples
- Moved Common Patterns (auto-publish on Content Fragment save, external cache purge after publication) to references/patterns.md for progressive disclosure, reducing the main SKILL.md by ~100 lines
- Added a Service User setup pattern to the reference file for completeness
- Condensed Best Practices section — removed verbose exception handling example, consolidated service user guidance into a concise paragraph with a link to the reference file
- Net result: SKILL.md dropped from 744 to 592 lines with better structure
**Unchanged skills:**
- All other 88 skills left untouched — many are already scoring well (replicate-content at 100%, workflow-development at 99%, best-practices at 94%)
</details>
I also stress-tested your replication skill against a few real-world task evals and it held up really well on bulk content activation with automatic transactional bucketing above the 100-path threshold. Kudos for that.
Honest disclosure — I work at @tesslio where we build tooling around skills like these. Not a pitch — just saw room for improvement and wanted to contribute.
Want to self-improve your skills? Just point your agent (Claude Code, Codex, etc.) at this Tessl guide (https://docs.tessl.io/evaluate/optimize-a-skill-using-best-practices) and ask it to optimize your skill. Ping me — @yogesh-tessl (https://github.com/yogesh-tessl) — if you hit any snags.
Thanks in advance 🙏
Co-authored-by: Yogesh Rao <yogesh-tessl@users.noreply.github.com>
* fix(aem-workflow): correct workflow-model-design XML format for /conf design-time (AEMaaCS)
The cloud-service workflow-model-design skill incorrectly showed
cq:WorkflowModel / cq:WorkflowNode / cq:WorkflowTransition (runtime
/var format) under the /conf design-time path. The Workflow Model
Editor expects cq:Page + jcr:content/flow/<step-component> with
nt:unstructured step nodes and sling:resourceType identifiers.
A developer following the previous content would deploy a model the
editor cannot open and Sync cannot process.
Verified against AEM Cloud Service SDK localhost:4517 OOTB models at
/libs/settings/workflow/models/ and source at com.adobe.granite.workflow
on master branch.
- model-xml-reference.md: full rewrite to cq:Page + flow/parsys
format; design-time vs runtime table; cq:template fix to
/libs/cq/workflow/templates/model; rewritten pitfalls section;
runtime /var shape documented for reference
- step-types-catalog.md: every step snippet converted to
nt:unstructured + sling:resourceType; sling:resourceType reference
table added; initiatorparticipant documented; transition XML
removed (Sync derives transitions from step order)
- model-design-patterns.md: Pattern 5 Task Manager XML corrected to
flow-layer format; Pattern 6 variables annotated as runtime-only
- SKILL.md: Sync verification added to checklist; /conf-only on
AEMaaCS distinction (no /etc legacy auto-deploy); filter.xml
guidance updated
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix(aem-workflow): correct AND_SPLIT/AND_JOIN/END resourceTypes in workflow-model-design (AEMaaCS)
The cloud-service step-types-catalog listed sling:resourceType values
for AND_SPLIT, AND_JOIN, and END that do not exist as design-time
components on AEM Cloud Service. Verified against
/libs/cq/workflow/components/model/ on localhost:4517.
- sling:resourceType table: AND_split -> and (actual OOTB component
is named `and`, not `AND_split`); AND_join and end rows removed
(no such components exist)
- AND_SPLIT example: corrected sling:resourceType to
cq/workflow/components/model/and; AND_JOIN inline example removed
- AND_JOIN section: replaced manual <synchronize> example with note
that AEM Sync derives AND_JOIN nodes automatically at /var
- END Node section: replaced manual <workflowend> example with note
that Sync derives both START and END automatically
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Align with the updated MCP server which split fetch-cam-bpa-findings
into two purpose-specific tools:
- fetch-cam-bpa-findings-by-pattern: code-transformer pattern flows
(scheduler, assetApi, eventListener, resourceChangeListener, eventHandler)
- fetch-cam-bpa-findings-by-importance: returns authoritative _COUNT_
rollup rows at one importance level (CRITICAL/MAJOR/ADVISORY/INFO),
sorted by descending count — for open-ended "what are the critical
findings?" requests
Changes:
- cam-mcp.md: rename all references; add full Tool section for
fetch-cam-bpa-findings-by-importance (request, response shape,
backend endpoint, error response note)
- SKILL.md: update CAM via MCP summary and batching section to name
both tools with their respective use cases
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The MCP cam-bpa-fetcher now returns success:true with an empty targets
array and a message field when a specific pattern has no findings in the
latest BPA report, instead of success:false with a misleading "upload
BPA report" suggestion.
Align the skills layer:
- BpaResult gains a message field (unified-collection-reader.js)
- bpa-findings-helper caches and propagates mcp.message so callers see
"No 'scheduler' findings in the latest BPA report for project X"
rather than the generic cache message when targets are empty
- cam-mcp.md documents the new message field on the success response
and splits the empty-targets behavior table row into the two distinct
cases (success:true specific-pattern vs success:false all-pattern)
- New test verifies message propagation, cache write, and no re-fetch
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Tighten aem-rde activation: explicit RDE references only; add do-not-activate guard for generic AEMaaCS phrases (cloud sandbox, dispatcher-config/frontend/env-config, push my bundle, tail the publish log) that belong to Cloud Manager pipelines
- Mark skill as beta per project conventions: [BETA] prefix in description with caveat, metadata.status: beta in frontmatter, and a beta-skill blockquote in the body
- Reflect beta status in README entry
- Update aem-cloud-service plugin.json description and keywords to mention RDE for discoverability
- Add aem-rde skill section to README.md for human and AI agent discovery
- Document single-user RDE constraint in references/configuration.md
Introduces a new plugin 'aem-cloud-service' to host AEMaaCS / Cloud
Manager related skills, separate from the existing
'aem-edge-delivery-services' grouping. Adds the 'aem-rde' skill which
provides expert guidance on '@adobe/aio-cli-plugin-aem-rde' commands:
deploy, inspect, log-tail, snapshot, and troubleshoot Rapid Development
Environments.
* Add comprehensive AEM Cloud Service content distribution skills
Created a complete skill suite for AEM as a Cloud Service content distribution,
covering publishing workflows, Preview tier management, programmatic APIs,
troubleshooting, and orchestration.
Skills included:
- content-distribution (main orchestrator with intent routing)
- publish-content (Quick Publish, Manage Publication, Tree Activation, scheduling)
- preview-tier (Preview tier workflows, UAT testing, stakeholder review)
- distribution-api (JCR-based publishing, OSGi event handlers, bulk operations)
- troubleshoot-distribution (diagnostics for stuck content, CDN cache, Sling jobs)
- orchestrator (go-live preparation, incident response, CDN optimization)
Reference documentation:
- architecture.md (3-tier architecture, Sling Content Distribution, CDN)
- cloud-guardrails.md (rate limits, best practices, capacity planning)
Key features:
- 9 markdown files with 3,703 lines of comprehensive documentation
- 100% Cloud Service-specific (no 6.5 LTS content)
- Real-world examples with Java code and workflows
- Preview tier native support (Cloud Service exclusive feature)
- Automatic Sling Content Distribution (vs manual replication agents)
- Integrated Adobe CDN with auto-purge
- Based on official Adobe documentation
Location: skills/aem/cloud-service/skills/content-distribution/
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* fix: Remove all migration-related content and fix broken references
Address PR review feedback:
- Remove migration workflow from orchestrator capabilities (README.md, SKILL.md)
- Remove migration use cases
- Delete entire "Migration from AEM 6.5 LTS" section from README
- Delete "Migration from 6.5 LTS Guardrails" section from cloud-guardrails.md
- Replace migration note with reference to separate migration skill
- Remove broken references to non-existent sling-distribution.md, cdn-integration.md, preview-tier.md files
- Add note that additional reference documentation will be added in future updates
All migration-related content removed per PR requirements.
Documentation now focuses solely on Cloud Service content distribution.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* fix: Correct AEM Cloud Service Replication API documentation
CRITICAL FIXES:
1. Replication API EXISTS in Cloud Service (not removed)
- Corrected false claim that com.day.cq.replication.* is "REMOVED"
- The Replicator interface, ReplicationOptions, ReplicationStatus all exist
- Official Adobe Javadoc confirms API availability
2. Use official Replicator.replicate() method (not JCR properties)
- Replaced undocumented JCR property approach with official API
- Updated all code examples to use replicator.replicate()
- Added proper OSGi service injection examples
3. Removed all migration-related content
- Changed "Migrating large content trees" to "Publishing large content trees"
- Changed "Site migration" to "Bulk site publishing"
- Changed "Controlled content migration" to "Specific content deployment"
- Removed reference to non-existent "migration skill"
4. Added Cloud Service capacity limits
- Maximum 100 paths per replicate() call (recommended)
- Absolute limit: 500 paths (throws ReplicationException)
- Maximum 10MB content size per call
- Recommend Tree Activation workflow for bulk operations
VERIFIED AGAINST:
- https://experienceleague.adobe.com/en/docs/experience-manager-cloud-service/content/operations/replication
- https://developer.adobe.com/experience-manager/reference-materials/cloud-service/javadoc/com/day/cq/replication/package-summary.html
- https://developer.adobe.com/experience-manager/reference-materials/cloud-service/javadoc/com/day/cq/replication/Replicator.html
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* fix: Rewrite content distribution skills with official APIs
Complete rewrite of AEM Cloud Service content distribution skills based
on official Javadoc and Adobe documentation.
**Previous issues:**
- Incorrectly claimed Replication API (com.day.cq.replication) was removed
- Showed manual JCR property manipulation instead of using Replicator service
- Referenced "Sling Content Distribution API" as developer-facing (it's internal)
- Mixed UI workflows with programmatic APIs
- Generic troubleshooting content with no unique value
**Changes made:**
- Deleted 7 files with incorrect/low-value content (3,349 lines)
- Created 2 new skills based on official APIs (2,154 lines):
1. replication/SKILL.md - Official Replication API (com.day.cq.replication.Replicator)
2. sling-distribution/SKILL.md - Distribution event monitoring (org.apache.sling.distribution.event)
- Rewrote README.md and SKILL.md with accurate architecture and examples
**Official documentation sources:**
- Replication API: https://developer.adobe.com/experience-manager/reference-materials/cloud-service/javadoc/com/day/cq/replication/
- Sling Distribution: https://developer.adobe.com/experience-manager/reference-materials/cloud-service/javadoc/org/apache/sling/distribution/
- Adobe Guide: https://experienceleague.adobe.com/docs/experience-manager-cloud-service/content/operations/replication.html
**What's included:**
- Complete Replicator API usage (single/bulk publishing, Preview tier)
- ReplicationOptions for advanced configuration
- Distribution event handling (CREATED, QUEUED, DISTRIBUTED, DROPPED, IMPORTED)
- Rate limits and best practices (100 paths/call, 10MB max)
- Real code examples verified against official Javadoc
- Workflow integration patterns
- Service user configuration examples
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* fix: Add helper method implementations to code example
- Add getServiceResolver() implementation with ResourceResolverFactory
- Add isContentFragment() implementation
- Improves code example completeness for developers
* docs: Mark content-distribution skill as beta using PR #72 convention
Apply the three-mechanism beta skill convention:
- Add frontmatter status: beta field
- Add [BETA] prefix and warning to description
- Add blockquote beta notice in body
This follows the pattern documented in adobe/skills#72 for marking
skills that are under active development and need verification before
production use.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* fix: align skill names with parent directory names
Address review feedback from @rombert - update skill name fields
to match parent directory names per agentskills.io specification:
- aem-content-distribution → content-distribution
- aem-replication-api → replication
- aem-sling-distribution → sling-distribution
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* fix: move content-distribution skill from skills/ to plugins/ top-level directory
Following PR #76 convention, the top-level directory is `plugins`, not `skills`.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: add license field and remove disallowed status field from content-distribution skills
- Add license: Apache-2.0 to all 3 SKILL.md files (required by license-field CI check)
- Remove status: beta from content-distribution/SKILL.md (not an allowed frontmatter field per validate CI check)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: removing depricating apis
---------
Co-authored-by: Abhishek Garg <abhigarg+adobe@adobe.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>