Commit Graph

13 Commits

Author SHA1 Message Date
yogesh-tessl eb2d4f380d feat: improve replication skill score from 52% to 87% (#136)
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>
2026-05-21 13:46:16 +02:00
Himani Chauhan 52e83b770b feat(migration): align skill with updated MCP tool names and empty-pattern result handling
feat(migration): align skill with updated MCP tool names and empty-pattern result handling
2026-05-13 16:13:48 +05:30
Akanksha Jain 1c93e5418e fix(aem-workflow): correct workflow-model-design XML format and step resourceTypes (AEMaaCS) (#123)
* 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>
2026-05-13 15:41:35 +05:30
Himani Chauhan 69e8446df3 feat(migration): rename MCP tool and add fetch-by-importance tool docs
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>
2026-05-13 15:35:07 +05:30
Himani Chauhan bdc9706526 feat(migration): handle empty-pattern BPA results from updated MCP tool
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>
2026-05-13 15:35:07 +05:30
Burkhard Pauli 26c2c4164f fix: address rombert and abhishekgarg18 review feedback
- 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
2026-05-07 16:22:10 +02:00
Burkhard Pauli 17a795cbc1 fix: address PR review feedback
- 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
2026-05-07 09:58:34 +02:00
Burkhard Pauli 01a3493b64 fix: remove unsupported user-invocable frontmatter field from aem-rde skill 2026-05-06 15:28:25 +02:00
Burkhard Pauli b40dffd4cc feat: add aem-rde skill under new aem-cloud-service plugin
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.
2026-05-06 15:14:40 +02:00
Abhishek Garg 4c492792d8 feat: adding aem content distribution skill in AEMaaCS skills (#84)
* 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>
2026-04-23 14:17:03 +05:30
Himani Chauhan bfe825cd2c feat(migration): batch BPA findings with paging and unified helper behavior 2026-04-21 13:58:41 +05:30
Himani Chauhan cb2a812e1f merge upstream main 2026-04-17 14:12:57 +05:30
solimant fcba900bc5 refactor: rename the skills directory to plugins 2026-04-16 18:12:10 +00:00