* 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>
* fix(aem-workflow): correct workflow-model-design XML format for /conf design-time (AEM 6.5 LTS)
The 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 6.5 LTS localhost:4505 OOTB models at
/libs/settings/workflow/models/ and source at
WorkflowSessionFactory.java:94 (MODELS_RUNTIME_LOCATION = "/var/workflow/models").
- 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 vs /var
distinction note; 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 (AEM 6.5 LTS)
The step-types-catalog incorrectly listed sling:resourceType values for
AND_SPLIT, AND_JOIN, and END that do not exist as design-time
components on AEM 6.5 LTS. Verified against
/libs/cq/workflow/components/model/ on localhost:4505.
- sling:resourceType table: AND_split -> and (the 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 a note
that AEM Sync derives AND_JOIN nodes automatically at /var
- END Node section: replaced manual <workflowend> example with a 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>
* fix(replicate-content): condense SKILL.md to pass tessl-review (#117)
Rewrites replicate-content/SKILL.md from 840 lines to ~150 lines and
adds three reference files so the skill passes the 50% tessl-review
threshold.
Changes:
- Description: add explicit "Use when..." clause and trigger terms
(publish, unpublish, replicate, content activation, dispatcher flush,
AEM publish instance) to improve specificity and completeness scores
- Body: condense all seven replication methods to 3-5 lines each with
explicit ✓ Verify checkpoints; remove generic Best Practices,
Security Considerations, and Success Criteria sections
- Split detailed walkthroughs into references/ bundle files:
- references/TREE_ACTIVATION.md (dry-run steps, performance guidance)
- references/PACKAGE_REPLICATION.md (full package build/replicate flow)
- references/REPLICATION_API.md (Java API, ReplicationOptions,
curl with error handling, service user setup)
Fixes#117
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(replicate-content): address quality review findings
- CRITICAL: replace invalid XML service-user mapping with correct OSGi
JSON config format (.cfg.json) in REPLICATION_API.md
- HIGH: add REVERSE to ReplicationActionType table (was missing)
- HIGH: add replication-api to Related Skills in SKILL.md
- MEDIUM: add Only Activated option to Tree Activation summary to match
TREE_ACTIVATION.md reference file
- MEDIUM: fix head -n1 → sed '$d' in production curl script to handle
multiline JSON responses without truncation
- MEDIUM: add brief Asset Replication (DAM) section to SKILL.md
- LOW: add Additional Resources section with official Adobe docs links
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Abhishek Garg <abhigarg+adobe@adobe.com>
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.
Renames resources/ to references/ across 8 skills to match the
agentskills.io spec — every other plugin in this repo and EDS's own
ue-component-model already use references/.
Converts backtick-quoted resource paths in SKILL.md to markdown links
so tessl lint sees them as reachable from manifest entrypoints,
eliminating all 17 orphan warnings. Also fixes two pre-existing broken
cross-skill references that pointed at ../page-import/resources/...
(no such directory); the actual file lives in
content-driven-development/references/.
Adds a markdown link in code-review/SKILL.md to its previously
unreferenced references/review-checklist.md.
Per Anthropic's agent skills spec, markdown links don't trigger eager
loading — Claude reads SKILL.md, sees the link, decides on demand
whether to follow it.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Suppresses tessl lint warnings about CHANGELOG.md and package.json
files that exist as semantic-release / semantic-release-monorepo
artifacts but are not skill content.
Negation pattern preserves package.json files under scripts/ so that
future skills shipping node script tools have their packaging metadata
bundled correctly.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Two skills existed in the skills/ directory but were absent from
tile.json, so tessl never saw them. Adds both to the skills map and
creates the missing package.json for ue-component-model so the release
workflow can pick it up.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* feat(da-auth): add da-auth skill and surface DA auth in CDD workflow
Adds a dedicated da-auth sub-skill for obtaining a valid Adobe IMS
token before making DA Admin API calls. Updates content-driven-development
and building-blocks to reference it at the right points in their workflows.
Motivation: agents working outside the create-site onboarding flow had
no guidance on DA authentication, requiring manual hand-holding every
time content needed to be pushed or a preview triggered.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(da-auth): remove CMS phrasing from DA references
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* 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>