116 Commits

Author SHA1 Message Date
semantic-release-bot 9ca1da2628 chore(release): testing-blocks-v2.0.0 [skip ci] 2026-05-14 16:26:26 +00:00
semantic-release-bot ee6a5d7fd5 chore(release): scrape-webpage-v2.0.0 [skip ci] 2026-05-14 16:24:08 +00:00
semantic-release-bot 138e189fed chore(release): preview-import-v2.0.0 [skip ci] 2026-05-14 16:21:52 +00:00
semantic-release-bot f015564db8 chore(release): generate-import-html-v2.0.0 [skip ci] 2026-05-14 16:19:35 +00:00
semantic-release-bot 33b91af03b chore(release): content-modeling-v2.0.0 [skip ci] 2026-05-14 16:17:18 +00:00
semantic-release-bot 03fc683c74 chore(release): content-driven-development-v2.0.0 [skip ci] 2026-05-14 16:15:29 +00:00
semantic-release-bot 5a39da1cbf chore(release): code-review-v2.0.0 [skip ci] 2026-05-14 16:13:10 +00:00
semantic-release-bot 0ad01b5a1b chore(release): building-blocks-v2.0.0 [skip ci] 2026-05-14 16:11:21 +00:00
semantic-release-bot 8f80befe83 chore(release): analyze-and-plan-v2.0.0 [skip ci] 2026-05-14 16:09:04 +00:00
Sean Steimer fdc294a67c Merge pull request #104 from adobe/fix/eds-register-missing-skills
fix(aem-eds): clean up tile to clear all lint warnings
2026-05-14 09:08:40 -07:00
Paolo Mottadelli 1ab6833f1e fix(stardust): make migrate output genuinely zip-and-deploy portable (#133)
* fix(stardust): make migrate output genuinely zip-and-deploy portable

The 0.7.0 contract claimed "self-contained, zip-and-deploy" but
emitted root-absolute paths (/assets/..., /beers/) plus
directory-only nav links. Those work on a webserver at the host
root only — they 404 on file:// and at any subpath. This PR
delivers what the claim promised:

- Output path is URL-literal: /beers/ -> beers/index.html,
  /about-us/history.html -> about-us/history.html. No more
  synthesizing /about/index.html from a slug.
- Page map (state.json.migrate.pageMap[]) built once per run;
  per-page rendering and internal-link rewriting both consume it.
- Reference shape is depth-aware relative: prefix is ./ for
  depth-0 pages, ../ * depth otherwise. Works on file://, at
  host root, and at any subpath without rewriting.
- Phase 3 broadens the self-containment check into a full
  portability audit: refuses absolute internal refs, refuses
  directory-only nav, runs the new pageMap + file:// fixtures.
- New fixtures: file-protocol-audit.mjs (Playwright file://
  round-trip) and pagemap-audit.mjs (static pageMap consistency).
- asset-bundling.md and migrate-output-format.md aligned to the
  new depth-aware-relative shape; state.json contract gains
  pageMap[].

Plugin bumped 0.7.0 -> 0.7.1.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* review: fix four flagged correctness issues

- Directory-only-nav regex now catches `./beers/` (the cited example).
  Old pattern required a-z as first char; `./beers/` starts with `.`
  and would have slipped through. New pattern accepts ./, ../, /, or a
  bare segment, and excludes scheme-bearing URLs (no false positive
  on https://google.com/).
- Add a second grep for absolute url() references inside inline style
  attrs and <style> blocks (and CSS files); the original href/src grep
  missed these.
- SKILL.md Outputs row no longer claims the sidecar lives at
  <source-url-path>/_meta.json (nonsense for .html-leaf pages).
  Replaced with a row that points at the canonical sidecar rule.
- migration-procedure.md § Page map now explicitly says same-origin
  absolute URLs are stripped to their path portion before pageMap
  lookup (per content-preservation.md § Internal link rewriting),
  closing the loophole that would let <a href="https://origin/foo/">
  pass through verbatim.

Regex patterns verified against a test fixture before commit.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* review: update migrate-self-contained-bundle eval to 0.7.1 contract

The eval was pinned to 0.7.0's root-relative /assets/<subpath>
shape. This PR's contract change to depth-aware relative paths
would have made the eval fail against correct 0.7.1 output.

- detection_src_href criterion now asserts <prefix>assets/<subpath>
  (not /assets/<subpath>).
- Renamed prefix_resolution_root_relative -> prefix_normalises_authoring;
  description flipped from "reference is left as-is" to "authoring
  is normalised to the depth-aware emit form".
- Added 4 new criteria: depth_aware_paths (6pts),
  pagemap_constructed (6pts), internal_links_via_pagemap (5pts),
  portability_audit_passes (13pts).
- Setup uses real source URLs that exercise the URL-literal rule:
  /, /beers/, /about/history.html (preserve .html leaf),
  /docs/api/ (depth-2 nested).
- Prototype HTML now carries internal nav in three authoring styles
  (root-absolute, same-origin absolute, directory-only) plus a
  broken-link case, exercising the page map rewrite.
- Run 1 expected behavior rewritten to expect depth-aware emission
  ('./assets/...'), pageMap built before render, broken-link
  flagging, and the 6-step portability audit passing.
- Run 4 (cross-page dedup) updated so the second page emits its
  shared asset with its own '../' prefix while the underlying file
  on disk is a single copy.
- Weights re-balanced to sum to 100; portability_audit_passes gets
  the largest weight (13pts) since it backs the contract claim.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 03:29:23 -07:00
Paolo Mottadelli 27dd06341c feat(stardust): migrate produces self-contained zip-and-deploy bundle (#132)
* feat(stardust): migrate produces self-contained zip-and-deploy bundle

Bundles every referenced asset into stardust/migrated/assets/ and
rewrites HTML/CSS references to root-relative /assets/<subpath> so
the migrated tree is fully self-contained. Adds asset-bundling
reference (six detection shapes, nine edge cases), output-format
contract with state.json.migrate block (selfContained: true),
--clean and --pin-timestamp flags, and an eval covering the six
acceptance criteria.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* review: fix count, --clean correctness, document asset-missing rename

- Bump totalAssetsBundled 6 → 7 in eval task.md (matched bundledAssets[] length).
- --clean now implies --force so the bundledAssets Set is the complete
  union across every page; idempotent-skipped pages' assets are no
  longer at risk of being deleted as stale. Updated SKILL.md flag
  description, asset-bundling.md § Stale asset cleanup, the
  Idempotent-skip interaction note, and the eval's run-3 expected
  behaviour + criterion.
- Document the contentDeviations / migrationDecisions kind rename
  from "media-missing" to "asset-missing" in
  migrate-output-format.md § Backwards compatibility — consumers
  should accept either string until they migrate.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* chore(stardust): bump plugin version 0.6.0 → 0.7.0

Self-contained zip-and-deploy bundle is a minor-version addition:
new --clean and --pin-timestamp flags, new state.json migrate
block (forward-compat), new asset-bundling reference contract,
provenance kind rename (media-missing → asset-missing).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* chore(stardust): bump palette library version v0.6.0 → v0.7.0

Keep the palette library version aligned with the plugin version.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-13 12:32:30 -07:00
Paolo Mottadelli bfe537dbdd feat(stardust): ia-fidelity axis + 10 non-slop disciplines + approval fold-back (#131)
Coordinated three-part change: Part I adds a strategic ia-fidelity
axis pinned at direct time (verbatim → A1/A2/A3 surface forks vs
reimagined → A+B+C role-differentiated). Part II adds 10 disciplines
at three phase boundaries (brief-time 1-5, craft-time 6-8, quality
gates 9 + convergence detector 10) with the four wasatch dry-run
friction carve-outs folded in. Part III lands Phase 5 approval
fold-back (site-wide / page-local / don't-fold) with verbatim no-op
gating. Also sweeps remaining Phase 5.5 → 2.7 references across the
plugin docs.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-13 09:44:12 -07: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
Paolo Mottadelli 5d47099881 feat(stardust)!: sweep — drop doctor, fossils, opt-out flags, live integration
* feat(stardust)!: sweep — drop doctor.md, F-NNN fossils, opt-out flags, live integration

Four related cleanups bundled. Each independently small; together
they shrink the docs by ~600 lines and remove three doc-rot
patterns at once.

1. Delete doctor.md (493-line spec for an unimplemented script).
   The Festool-incident concerns it was scoped to are now handled
   by concrete write-time contracts (validateProvenance, content-
   sourcing hierarchy, anti-toolbox audit). No external references.

2. Drop F-NNN feedback fossils + version-changelog paragraphs.
   STARDUST-FEEDBACK.md doesn't exist in the plugin; the F-001 /
   F-002 / F-009 / F-015 / F-016 / F-018 citations were opaque
   tribal vocabulary. Kept the rules they cited; dropped the
   IDs. divergence-toolkit.md changelog paragraphs (v0.1 → v0.2,
   v0.4 → v0.5, v0.5 → v0.5.1) collapsed.

3. Slim flag surfaces. Every --no-* / --skip-* / --allow-* /
   --refresh-stale flag dropped from prototype and migrate; the
   underlying quality gates are now mandatory. Manual chat
   overrides ("ship as-is", "accept the P1 findings") remain
   available and are recorded in _provenance verbatim.

   prototype flags: 10 → 5 (<slug>, --all, --prep, --canon-from,
   --publish-sample).
   migrate flags: 8 → 5 (<slug>, --all, --force, --require-approved,
   --strict-canon).

4. Drop the impeccable:live integration. Live was documented as
   the "default" iteration path but wasn't used — chat-driven
   command invocation is the actual default. Phase 4 collapses
   from 6 steps to 3 (open file → mark prototyped → report).
   Iteration paths drop from 3 to 2 (chat-driven, direct
   invocation). Live remains usable as an external tool the user
   invokes directly against the proposed file; stardust no
   longer pretends to drive its poll loop.

BREAKING CHANGE: prototype no longer accepts --no-iterate,
--no-critique, --skip-adapt-audit, --adapt-variant, --no-hamburger,
--refresh-stale, or --no-impeccable. migrate no longer accepts
--refresh-stale, --allow-placeholder, or --skip-adapt-audit.
The mobile-adapt audit, content-sourcing scan, placeholder gate,
and critique + audit pass are now mandatory; manual chat overrides
replace the flag-based bypasses.

The live driver loop (Phase 4 steps 4-6: config.json setup, event
streaming, carbonize cleanup, iteratedVia: impeccable:live
provenance) is gone. The proposed file's iteratedVia provenance
now records the named impeccable commands run against the file,
not a live sessionId.

stardust bumped to 0.6.0.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* chore(stardust): sync tile.json version to plugin.json (0.6.0)

The tile manifest's version was stuck at 0.1.0 while the plugin
moved to 0.6.0. Keep them in sync so tessl-side catalog metadata
matches the marketplace.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-13 02:31:08 -07:00
Paolo Mottadelli 33dd9037f3 stardust: mobile-nav collapse + drop before/after viewer (#127)
* stardust: mobile-nav collapse pattern + drop before/after viewer

Two related changes to stardust:prototype landing together.

Mobile-nav collapse (additive):
- New stock CSS-only hamburger pattern auto-applied by Phase 5.5
  when the Mobile-adapt audit refuses at 360px (overflow,
  sub-11px nav font, or sub-10px nav gap).
- New audit conditions documented in skills/prototype/SKILL.md
  § Mobile-adapt audit; checked at runtime via the Playwright
  snippet at skills/prototype/fixtures/mobile-nav-audit.mjs.
- Stock pattern doc at skills/prototype/reference/mobile-nav-collapse.md
  carries the copy-pasteable HTML+CSS+JS, the ARIA checklist,
  the post-injection source-order check, --no-hamburger opt-out,
  and the alternative-pattern vocabulary.
- New data-nav-collapse="hamburger" attribute (v2.2 additive) on
  <header> when the pattern is applied.
- Positive + negative fixtures verify the audit end-to-end.

Drop the per-page before/after viewer:
- Phase 3 (Compose the viewer) removed; the proposed file is
  opened directly in the browser.
- Approval is now chat-only: "approve <slug>" or "approve".
- skills/prototype/reference/before-after-shell.md renamed to
  proposed-file-shell.md and stripped to the proposed-file
  contract only (viewer half, iframe resolution chain, action
  buttons, and stash mechanic all dropped).
- state-machine.md prototypePath repointed at -proposed.html;
  doctor.md D-104 pairs -proposed.html with -shape.md;
  artifact-map.md drops the <slug>.html row; publish-sample.md
  simplifies variant discovery (no more "is not the viewer"
  disambiguation); evals/prototype-before-after rewritten to
  expect a single proposed file.

BREAKING CHANGE: stardust:prototype no longer composes the
before/after viewer at stardust/prototypes/<slug>.html.
Anyone scripting on top of that file existing on disk should
switch to stardust/prototypes/<slug>-proposed.html (the
prototypePath in state.json now points there directly). The
approval gesture moves from the viewer's Approve button to a
chat-only "approve <slug>" / "approve".

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* stardust: bump version to 0.5.0

Minor bump for the breaking change in 370a208 (drop before/after
viewer; chat-only approval). Pre-1.0 semver: minor bump signals
a breaking change without claiming API stability.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-13 00:06:20 -07:00
Paolo Mottadelli 2da4f830ad stardust: fix dependencies schema to use name@marketplace string (#126)
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-12 12:21:32 -07:00
Paolo Mottadelli 9af9da4866 Merge pull request #125 from adobe/stardust-fix-marketplace-dep
stardust: fix cross-marketplace dep reference (0.4.1)
2026-05-12 12:12:07 -07:00
Paolo Mottadelli 90be5b7bf2 stardust: fix cross-marketplace dep reference to impeccable
The `marketplace` field in plugin dependencies and the
`allowCrossMarketplaceDependenciesOn` allowlist must use the
marketplace's `name` (`impeccable`), not its GitHub repo path
(`pbakaus/impeccable`). The mismatch caused Claude Code to flag
the stardust plugin manifest as invalid on install.

Bumped to 0.4.1.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-12 21:11:48 +02:00
Paolo Mottadelli c2f73925c2 Merge pull request #124 from adobe/seed-brief
stardust: bump version to 0.4.0
2026-05-12 11:54:09 -07:00
Paolo Mottadelli 69068cee1c stardust: bump version to 0.4.0
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-12 20:53:32 +02:00
Akanksha Jain 15563e127a Feat/skill workflow model design 65 lts (#122)
* 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>
2026-05-12 10:44:47 +02:00
Paolo Mottadelli 48ec3970ef stardust: close open clusters + declare cross-marketplace impeccable dep (#120)
* feat(stardust): close open clusters — publish-sample URL, mobile-adapt phase, critique+audit, add-variant

Four items from the 2026-05-05 review session covering UPS F7+F9,
NVIDIA F8, and dogfood-feedback 2026-05-03-a / JFK F14. All four
shipped together because they overlap in the same SKILL files.

- publish-sample showcase URL fix (UPS F9): the printed URL pattern
  pointed at a route that doesn't exist (samples/<slug>/), so every
  published sample carried a broken link in the PR body and final
  report. Updated to the actual single-page-viewer route
  (samples/brand.html?slug=<slug>#<variantId>) and synced the upstream
  default to paolomoz/stardust-site.

- Mobile-adapt as a pipeline phase (dogfood-feedback 2026-05-03-a +
  JFK F14): new prototype Phase 5.5 runs $impeccable adapt against
  the approved variant on every approval; mobile-adapt audit at
  prototype, migrate, and publish-sample refuses files with no
  <meta viewport>, zero @media (max-width: ...) rules, or no
  mobile-targeted breakpoint at <= 640px. --skip-adapt-audit escape
  hatch threads through all three. Closes the failure mode where
  the lovesac.com showcase shipped variant B to mobile visitors with
  bracket motif crowding, overflowing trust band, and no hamburger.

- Phase 2.5 critique + audit (NVIDIA F8): renamed from "Validate via
  critique" to "Validate via critique + audit"; runs both impeccable
  validators in parallel and gates prototyped status on P0/P1 from
  either. Added brand-faithful inversion auto-dismiss against
  DESIGN.json#extensions.divergence.brand_faithful_inversions[] so
  Mode A renders don't drown the report in known false positives
  (Arial fallback flagged as overused-font, eyebrow uppercase as
  all-caps body, etc.). publish-sample's submitter checklist updated
  to cover both validators.

- direct --add-variant <name> (UPS F7): incremental variant addition
  against the existing direction without re-running Phase 1 reasoning
  or stale-flagging existing prototypes. Procedure documented; per-
  field inheritance rules table specifies what's pinned (palette,
  typography, IA-priorities), what extends (componentStyle, divergence
  inversions), and what's variant-local (narrative, voice DOs, the
  amplified-trait anchor). Fixes the workflow where variant A ships,
  user later asks for B and C, and --re-direct is too heavy.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* chore(stardust): declare cross-marketplace dependency on impeccable

Whitelist pbakaus/impeccable in marketplace.json and declare it as a
dependency in stardust's plugin.json so stardust can formally depend on
the impeccable plugin hosted in a different marketplace.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-11 20:44:58 -07:00
Robert Munteanu df8be2cbdb Merge remote-tracking branch 'origin/main' into feat/aem-rde-skill 2026-05-11 10:26:50 +02:00
Abhishek Garg 962fd1dbee fix(replicate-content): condense SKILL.md to pass tessl-review (#119)
* 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>
2026-05-11 10:20:39 +02:00
Robert Munteanu eb78c8a148 fix(stardust): fix tile.json to pass tessl-lint (#116)
- Add missing version/summary fields and convert skill paths from strings
to objects to match the required tile.json schema.
- tessl-lint rejects colons in skill names; only lowercase letters,
numbers, and hyphens are allowed.
- Skill keys must match the name field in each SKILL.md; drop the
stardust- prefix since the SKILL.md files declare short names.

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 17:33:48 +02:00
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
Pavan Kumar Gaddam 0f1ad97af8 Merge pull request #91 from pru55e11/feat/agentic-project-workspace-api-bootstrap
appbuilder-project-init: agentic Console project/workspace/API bootstrap + recent release-note alignment
2026-05-06 17:30:46 -04: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
Paolo Mottadelli 5bb2150e37 feat(stardust): close open clusters — publish-sample URL, mobile-adapt phase, critique+audit, add-variant (#113)
Four items from the 2026-05-05 review session covering UPS F7+F9,
NVIDIA F8, and dogfood-feedback 2026-05-03-a / JFK F14. All four
shipped together because they overlap in the same SKILL files.

- publish-sample showcase URL fix (UPS F9): the printed URL pattern
  pointed at a route that doesn't exist (samples/<slug>/), so every
  published sample carried a broken link in the PR body and final
  report. Updated to the actual single-page-viewer route
  (samples/brand.html?slug=<slug>#<variantId>) and synced the upstream
  default to paolomoz/stardust-site.

- Mobile-adapt as a pipeline phase (dogfood-feedback 2026-05-03-a +
  JFK F14): new prototype Phase 5.5 runs $impeccable adapt against
  the approved variant on every approval; mobile-adapt audit at
  prototype, migrate, and publish-sample refuses files with no
  <meta viewport>, zero @media (max-width: ...) rules, or no
  mobile-targeted breakpoint at <= 640px. --skip-adapt-audit escape
  hatch threads through all three. Closes the failure mode where
  the lovesac.com showcase shipped variant B to mobile visitors with
  bracket motif crowding, overflowing trust band, and no hamburger.

- Phase 2.5 critique + audit (NVIDIA F8): renamed from "Validate via
  critique" to "Validate via critique + audit"; runs both impeccable
  validators in parallel and gates prototyped status on P0/P1 from
  either. Added brand-faithful inversion auto-dismiss against
  DESIGN.json#extensions.divergence.brand_faithful_inversions[] so
  Mode A renders don't drown the report in known false positives
  (Arial fallback flagged as overused-font, eyebrow uppercase as
  all-caps body, etc.). publish-sample's submitter checklist updated
  to cover both validators.

- direct --add-variant <name> (UPS F7): incremental variant addition
  against the existing direction without re-running Phase 1 reasoning
  or stale-flagging existing prototypes. Procedure documented; per-
  field inheritance rules table specifies what's pinned (palette,
  typography, IA-priorities), what extends (componentStyle, divergence
  inversions), and what's variant-local (narrative, voice DOs, the
  amplified-trait anchor). Fixes the workflow where variant A ships,
  user later asks for B and C, and --re-direct is too heavy.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-05 09:00:14 +02:00
Paolo Mottadelli ed46712dde stardust: extract integrity & capture-fidelity hardening from 2026-04-29 → 2026-05-04 dogfood (#112)
* feat(stardust): provenance integrity — synthesis guard, cascade validation, full body capture

Closes a class of silent corruption where extract --prep silently
synthesized page records and the cascade ran four phases on
fabricated data before being caught by a meta-question
(2026-04-30 lovesac.com).

- extract refuses to mark a page extracted without renderedBy:"playwright"
  + fetchedAt + waitMs>0 + waitMode + httpStatus; new ProvenanceMissing
  error class; sub-agent prompts must forbid synthesis by name and return
  a per-page evidence table.
- validateProvenance(page) specced in state-machine.md; called at setup
  of direct --prep, prototype, migrate; cascade guard runs between
  prepare-migration Phase 1 and Phase 2 with explicit abort message.
- innerText captured in full — no truncation. Reference scripts must
  not slice (the v0.2 .slice(0, 4000) silently dropped most body content
  on long-form pages and broke module detection downstream).
- Schema additions for sections[].body, lists, qa, quotes so migrate can
  render real body copy under each heading instead of falling back to
  placeholder-with-signature throughout.
- Mandatory per-page evidence table in extract Phase 6 with live: yes/no
  column; Provenance: N/N live line in prep summary so the contract is
  visible at a glance.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* feat(stardust): extract reliability — Akamai headed fallback + consent pre-flight

Two unrelated context-setup gaps surfaced in 2026-05-03/04 dogfood
that silently produced bad captures.

- Bot-management fallback (UPS, ups.com/gb): Akamai rejects bundled-
  chromium-default headless on its TLS/H2 fingerprint with
  ERR_HTTP2_PROTOCOL_ERROR, before any JS runs. Recipe now specifies
  headless: false, channel: 'chrome' as the retry path; playwright-
  recipe.md gains a Bot-management fallback section, extract setup
  switches modes on the protocol error without retrying headless,
  and the in-page fetch pattern is documented for sub-resource
  fetches that need to inherit the JA3 fingerprint.

- Consent banner pre-flight (NVIDIA, nvidia.com): every page's
  screenshot was overlaid by the OneTrust banner and the voice
  table was dominated by 'Manage Settings' / 'Reject All' /
  'Accept All' once-per-page. Recipe now specifies an API-first
  dismissal (OneTrust / Cookiebot / Didomi / Osano) with selector
  fallbacks, --no-consent-dismiss opt-out, and consent.method
  recorded in _crawl-log.json. Side-effect caveat documented: the
  dismissal can activate other gated scripts (analytics, geo-IP,
  A/B) and the result may differ from a no-dismiss capture.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* feat(stardust): extract capture fidelity — fonts, icon font, CSS-bg pseudo, hero image, logo rect-filter

Five capture-fidelity gaps surfaced across the 2026-04-29 → 2026-05-04
dogfood window. Each silently produced a thinner or wrong brand surface
that downstream prototypes then rendered against.

- Logo locator step 2 (UPS): rect filter (height ≥ 32, width ≥ 40,
  top ≤ 200) + aspect filter [0.5, 3.0] + rank by proximity to 1.5
  ideal. Stops promotional icons that share the brand-name substring
  from being picked as the masthead logo.
- CSS-background hero (UPS): pseudo-element walk on ::before / ::after
  generated content, which document.querySelectorAll('*') doesn't
  reach. Performance-bounded by the prior visible-size filter.
- voice.heroImage elevation (UPS): single canonical hero per home,
  resolved by viewport-top + visible-area + aspect-ratio filters
  with explicit DOM > CSS-bg > pseudo tie-breakers. Ends downstream
  re-derivation from a 16-image list.
- Font file capture via network-intercept (JFK): every woff2/ttf/otf
  saved to assets/fonts/, recorded in _brand-extraction.json#type.files[]
  with @font-face metadata + licensing flag. Closes the gap where
  Mode A prototypes silently fall back to system-ui on private-cut
  brands.
- Icon-font detection (JFK): query [class^="icon-"] + ::before
  font-family + codepoint, build iconClass → codepoint table, save
  the font file. Closes the emoji-fallback render path on
  Chakra/Material/government sites.
- Module-detection signal priority (sliccy): explicit ranking —
  headings → CTAs → cssBackgrounds → forms → componentsByLandmark
  → innerText substring. Substring search drops to corroboration
  only; was the source of the 2026-04-29 under-detection.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-05 08:10:29 +02:00
semantic-release-bot ca72b2780c chore(release): find-test-content-v1.2.0 [skip ci] 2026-05-03 19:13:25 +00:00
semantic-release-bot 48102a7c32 chore(release): block-collection-and-party-v1.2.0 [skip ci] 2026-05-03 19:12:47 +00:00
Lars Trieloff 16de1c85d7 Merge pull request #110 from adobe/renovate/jsdom-29.x-lockfile
chore(deps): update dependency jsdom to v29.1.1
2026-05-03 21:12:29 +02:00
Paolo Mottadelli 9cfed1145a feat(stardust): replace v1 with v0.3.0 (redesign on top of impeccable) (#111)
v1 (four-stage greenfield: brand → briefings → wireframes → prototype) is
preserved at tag stardust--v0.1.0. v0.3.0 is a complete refactor with a
new surface (extract → direct → prototype → migrate) and a hard runtime
dependency on impeccable.

- plugins/stardust: replace contents with v0.3.0 source from paolomoz/stardust-2
  (skills, evals, README, tile.json, plugin.json)
- plugins/stardust/.claude-plugin/plugin.json: bump to 0.3.0; add repository
  and v2-relevant keywords
- plugins/stardust/skills/*/SKILL.md: add license: Apache-2.0 to frontmatter
- .claude-plugin/marketplace.json: update stardust entry with new
  description, version, category, keywords, author, homepage, repository,
  license (mirrors adobe-for-creativity entry shape)
- plugins/stardust/README.md: status bumped to v0.3.0; v1 link repointed
  to the stardust--v0.1.0 tag

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-30 17:24:22 +02:00
renovate[bot] de187656ec chore(deps): update dependency jsdom to v29.1.1 2026-04-30 12:48:22 +00:00
njampani123 7aa9e6c771 Update plugins/creative-cloud/adobe-for-creativity/.claude-plugin/plugin.json
Co-authored-by: solimant <solimant@users.noreply.github.com>
2026-04-29 13:56:48 -07:00
njampani123 97fa5e9576 chore(adobe-for-creativity): update plugin description 2026-04-29 13:51:35 -07:00
Sean Steimer b48cf802a0 fix(aem-eds): align references/ with spec and silence orphan warnings
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>
2026-04-28 12:57:12 -07:00
Sean Steimer 39b58a3a39 chore(aem-eds): simplify .tileignore comments
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 12:33:01 -07:00
Sean Steimer 511e8e3edf chore(aem-eds): add .tileignore for release artifacts
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>
2026-04-28 12:31:19 -07:00
Sean Steimer eb296bc360 fix(aem-eds): register da-auth and ue-component-model in tile
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>
2026-04-28 12:06:52 -07:00
njampani123 f4adb66b5a chore(adobe-for-creativity): bump version to 1.0.1 2026-04-28 09:34:44 -07:00
njampani123 e55565c499 chore(adobe-for-creativity): bump version to 1.0.1 2026-04-28 09:34:38 -07:00
njampani123 f8039cf1bc chore(adobe-for-creativity): bump version to 1.0.1 2026-04-28 09:34:31 -07:00