Skip to content

feat(project-management): ops skill + centralised auth#153

Merged
asthabh23 merged 17 commits into
mainfrom
project-mgmt-ops
May 29, 2026
Merged

feat(project-management): ops skill + centralised auth#153
asthabh23 merged 17 commits into
mainfrom
project-mgmt-ops

Conversation

@asthabh23
Copy link
Copy Markdown
Member

Summary

  • Centralised auth: All skills (ops, admin, authoring, development, handover) now read IMS token from a single user-level file (~/.aem/ims-token.json). Auth skill writes here; consuming skills read from here — one login covers all projects.
  • Ops config decoupled from project directory: Ops skill uses ~/.aem/ops-config.json for org/site context, so it works from any directory without needing a project repo checkout. On each invocation it confirms the stored org with the user.
  • Ops skill: Full Edge Delivery Services admin operations — content preview/publish, cache, code sync, indexing, snapshots, logs, users, jobs, sites, config, secrets, API keys, tokens, profiles, versioning, pages, and Document Authoring (DA) via admin.da.live.
  • DA copy/move fix: destination field confirmed to require full /{org}/{site}/{path} prefix (site-relative silently fails).
  • Snapshot safety: Added 3-step confirmation gates for "Publish entire snapshot" and "Approve snapshot".
  • Sensitive Data Handling: Codified redaction rules for credentials, emails, and PII returned by admin endpoints.
  • Destructive op confirmation gates: Standardised across all resource modules.

Config layout

File Scope Contents
~/.aem/ims-token.json User-level (all projects) IMS OAuth token + expiry
~/.aem/ops-config.json User-level (ops skill only) org, site, ref
.claude-plugin/project-config.json Per-project (handover, authoring, dev, admin) org, site, ref

Test plan

  • Auth flow writes to ~/.aem/ims-token.json
  • Ops skill reads token from ~/.aem/ims-token.json without re-auth
  • Ops skill reads org from ~/.aem/ops-config.json and confirms with user
  • who am i returns profile via centralised auth
  • DA copy/move with full /{org}/{site}/ destination against admin.da.live
  • Snapshot publish/approve triggers confirmation prompt before executing

🤖 Generated with Claude Code

asthabh23 and others added 15 commits April 20, 2026 17:52
…min operations

Introduces a new skill that enables natural language execution of AEM Edge
Delivery Services admin tasks: content preview/publish, cache management,
code sync, indexing, user management, logs, jobs, config, secrets, and more.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add curl timeouts (--connect-timeout 15, --max-time 120) for network reliability
- Document all 8 roles (admin, author, publish, develop, basic_author, basic_publish, config, config_admin)
- Fix URL parsing to handle hyphenated org/site names using awk
- Add bulk operations with job tracking and workflow shortcuts
- Remove admin role enforcement - let API return 403 for permission errors
- Add POSIX-compatible shell commands for cross-platform support
- Expand help triggers and improve error handling guidance
- Update README with comprehensive command reference and role documentation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…ring resource

- Enhanced API documentation across all ops resources with clearer examples
- Added new da.md resource for Document Authoring operations
- Improved parameter descriptions and response formats
- Standardized endpoint documentation structure
- Added .claude-plugin/ to .gitignore

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…ety protocols

Corrects DA API usage (form-data for copy/move/config), documents
versioning flow (no restore endpoint — list + get + write back),
and adds config update, publish, and secret-creation safety guardrails.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Replaces cookie-based x-auth-token authentication with Adobe IMS OAuth
Bearer tokens. A single IMS token now works across admin.hlx.page,
admin.da.live, and the Config Service. Adds expiry tracking and
auto-captures the token via a local HTTP callback (no more manual
browser close).

BREAKING CHANGE: storage schema changed (authToken → imsToken +
imsTokenExpiry) and header format changed (x-auth-token →
Authorization: Bearer). Consumers must re-authenticate on first use.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Updates admin, authoring, development, and handover skills to delegate
authentication to the dedicated auth skill instead of performing their
own browser-based login flow. Switches API calls from the legacy
x-auth-token header to Authorization: Bearer with IMS tokens, and
replaces brittle grep-based JSON parsing of project-config.json with
proper JSON.parse via node.

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

- Replace shell-style ${var} with API path placeholder {var} in apikeys,
  secrets, tokens, and users resource tables
- Add missing IMS Bearer auth to sites.json curl examples in code.md and
  sites.md
- Document that config POST replaces the entire org/site config (not a
  merge) so callers GET → modify → POST the full object
- Correct DA folder delete/copy continuation flow: HTTP 206 with JSON
  body and continuation-token form field (not response header)
- Switch DA version restore to form-data upload so it works for both
  HTML and JSON files
Apply a consistent 3-step gate (state impact → ask yes/no → only execute on
yes) across all destructive operations: cache wildcard purge, code delete,
content delete preview, jobs stop, snapshots remove resource, tokens revoke,
users remove org user, versioning delete/restore, and config-api updates.
DA copy gains the same gate as the existing move flow, and stop job is
upgraded from a one-liner warning. SKILL.md risk table updated to match.

Also fix a doc bug in da.md: copy/move destination must be the full
/{org}/{site}/{path} prefix. Site-relative paths silently return HTTP 204
without performing the operation (verified via live testing on asthabh23).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Three changes bundled together, all driven by live testing against a
non-production org:

1. Drop `--connect-timeout 15 --max-time 120` from every curl example
   (22 files). The Bash tool harness already enforces a 120s default
   timeout, and the explicit cap was silently failing legitimate slow
   operations like bulk publishes and large media uploads.

2. Fix the auto-track polling loop in jobs.md. Progress fields are nested
   under `progress` in the API response, not at the top level, so the loop
   was always reporting 0/0. Updated the loop and the API reference note.

3. Document accurate response shapes for endpoints that return data:
   - apikeys.md / tokens.md: response is keyed-object / array; add
     critical warning that empty POST creates a credential with default
     role and 1-year expiry, with the secret value returned exactly once.
   - logs.md: actual response wraps entries in `{from, to, entries[]}`
     with `route` / `method` fields, not flat "Operation".
   - snapshots.md: response is `{snapshots: [...], links: {...}}`.

Also drops the leftover doc note in SKILL.md that referenced the removed
curl flags.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Adds a Sensitive Data Handling section to the ops skill covering
redaction defaults, memory rules, and POST safety on credential
endpoints. The redaction default applies uniformly across all org
types (personal/dev/stage/prod) — customer dev environments hold
real PII just like prod.

secrets.md gets the same empty-POST warning and create-confirmation
gate already present in apikeys.md and tokens.md, since POST to
secrets.json with an empty body creates a real secret on the server.

Verified behavioral compliance in a fresh session: redaction holds
on "list users" prompts and credential values are not re-echoed
after creation.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
… config to ~/.aem/ops-config.json

All skills now read the IMS token from a single user-level file (~/.aem/ims-token.json)
instead of per-project project-config.json. The ops skill uses ~/.aem/ops-config.json
for org/site context so it works from any directory. Other skills (handover, authoring,
development, admin) retain .claude-plugin/project-config.json for project-level context.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…tes, fix markdown

- da.md: destination field is site-relative, not full /{org}/{site}/ path
- snapshots.md: add 3-step confirmation for publish-entire and approve
- config-api.md: close missing ** in "Fails if org already exists"
- SKILL.md: add publish/approve snapshot to destructive ops table (HIGH)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 26, 2026

Tessl Skill Lint

⚠️ edge-delivery-services — 2 warning(s)
⚠ .tileignore is deprecated. Rename it to .tesslignore; the legacy filename will be removed in a future release.
⚠ Skill 'code-review': SKILL.md is approximately 10315 tokens (recommended maximum: 5000). Consider moving detailed content to separate reference files.

Context Cost

Skills
  - analyze-and-plan: 120 front-loaded, 1.6k-4.4k on-demand tokens
  - create-site: 79 front-loaded, 2.7k on-demand tokens
  - authoring-analysis: 52 front-loaded, 3.2k on-demand tokens
  - block-collection-and-party: 71 front-loaded, 4.8k on-demand tokens
  - block-inventory: 60 front-loaded, 2.2k on-demand tokens
  - building-blocks: 75 front-loaded, 2.3k-6.7k on-demand tokens
  - code-review: 60 front-loaded, 10.3k-13.1k on-demand tokens
  - content-driven-development: 74 front-loaded, 3.7k-8.6k on-demand tokens
  - content-modeling: 61 front-loaded, 2.4k-9.1k on-demand tokens
  - da-auth: 94 front-loaded, 1.2k on-demand tokens
  - docs-search: 75 front-loaded, 1.8k on-demand tokens
  - find-test-content: 52 front-loaded, 1.7k on-demand tokens
  - generate-import-html: 49 front-loaded, 2.3k-11k on-demand tokens
  - identify-page-structure: 59 front-loaded, 1.6k on-demand tokens
  - page-decomposition: 58 front-loaded, 2.1k on-demand tokens
  - page-import: 75 front-loaded, 1.8k on-demand tokens
  - preview-import: 46 front-loaded, 1.2k-4.9k on-demand tokens
  - scrape-webpage: 54 front-loaded, 1.3k-3.9k on-demand tokens
  - slicc-handoff: 111 front-loaded, 1.2k on-demand tokens
  - testing-blocks: 86 front-loaded, 2.5k-8.2k on-demand tokens
  - ue-component-model: 186 front-loaded, 2.4k-11.1k on-demand tokens

Total: 1.6k front-loaded, 54.2k-105.3k on-demand tokens

✔ Tile adobe/aem-edge-delivery-services@0.1.0 is valid
⚠️ stardust — 7 warning(s)
⚠ Found 42 orphaned file(s) not linked from manifest entrypoints:
- CHANGELOG-redesign-adobecom.md
- skills/direct/reference/direction-format.md
- skills/direct/reference/palette-picker.md
- skills/direct/reference/palettes/README.md
- skills/extract/reference/brand-review-template.md
- skills/extract/reference/brand-surface.md
- skills/extract/reference/current-state-schema.md
- skills/extract/reference/ia-extraction.md
- skills/extract/reference/playwright-recipe.md
- skills/migrate/reference/asset-bundling.md
- skills/migrate/reference/content-preservation.md
- skills/migrate/reference/metadata-and-jsonld.md
- skills/migrate/reference/migration-procedure.md
- skills/migrate/reference/template-and-module-rendering.md
- skills/prototype/assets/motion/LICENSE.md
- skills/prototype/fixtures/composition-delta-good.md
- skills/prototype/fixtures/composition-delta-trivial.md
- skills/prototype/reference/anti-template-bank.md
- skills/prototype/reference/approval-fold-back.md
- skills/prototype/reference/canon-extraction.md
- skills/prototype/reference/fidelity-refined-pass.md
- skills/prototype/reference/mobile-nav-collapse.md
- skills/prototype/reference/motion-attributes.md
- skills/prototype/reference/motion-registers.md
- skills/prototype/reference/motion-runtime.md
- skills/prototype/reference/motion-stack.md
- skills/prototype/reference/motion-validation.md
- skills/prototype/reference/page-shape-brief.md
- skills/prototype/reference/proposed-file-shell.md
- skills/prototype/reference/publish-sample.md
- skills/stardust/reference/artifact-map.md
- skills/stardust/reference/data-attributes.md
- skills/stardust/reference/divergence-toolkit.md
- skills/stardust/reference/impeccable-command-map.md
- skills/stardust/reference/intent-dimensions.md
- skills/stardust/reference/intent-examples.md
- skills/stardust/reference/intent-reasoning.md
- skills/stardust/reference/journal-format.md
- skills/stardust/reference/migrate-output-format.md
- skills/stardust/reference/state-machine.md
- skills/stardust/reference/token-contract.md
- skills/uplift/reference/what-if-candidates.md
⚠ Found 6 skill file(s) outside spec directories (references/, assets/, scripts/):
- skills/direct/reference/palettes/library.json
- skills/prototype/fixtures/mobile-nav-broken-example.html
- skills/prototype/fixtures/mobile-nav-collapse-example.html
- skills/prototype/fixtures/mobile-nav-audit.mjs
- skills/migrate/fixtures/pagemap-audit.mjs
- skills/migrate/fixtures/file-protocol-audit.mjs
⚠ Skill 'extract': SKILL.md is approximately 7994 tokens (recommended maximum: 5000). Consider moving detailed content to separate reference files.
⚠ Skill 'direct': SKILL.md is approximately 17653 tokens (recommended maximum: 5000). Consider moving detailed content to separate reference files.
⚠ Skill 'prototype': SKILL.md is approximately 16171 tokens (recommended maximum: 5000). Consider moving detailed content to separate reference files.
⚠ Skill 'migrate': SKILL.md is approximately 5385 tokens (recommended maximum: 5000). Consider moving detailed content to separate reference files.
⚠ Skill 'uplift': SKILL.md is approximately 5128 tokens (recommended maximum: 5000). Consider moving detailed content to separate reference files.

Context Cost

Skills
  - stardust: 33 front-loaded, 2.8k on-demand tokens
  - distill: 207 front-loaded, 3.9k-7k on-demand tokens
  - extract: 45 front-loaded, 8k on-demand tokens
  - direct: 96 front-loaded, 17.7k on-demand tokens
  - prototype: 90 front-loaded, 16.2k on-demand tokens
  - migrate: 65 front-loaded, 5.4k on-demand tokens
  - prepare-migration: 52 front-loaded, 2.9k on-demand tokens
  - uplift: 107 front-loaded, 5.1k on-demand tokens

Total: 695 front-loaded, 62k-65.1k on-demand tokens

✔ Tile adobe/stardust@0.10.0 is valid

✅ All 2 tile(s) lint passed with 9 warning(s) total.

Updated by tessl-lint for commit da1acbd.

asthabh23 and others added 2 commits May 26, 2026 12:04
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Tokens are now stored at ~/.aem/ims-token.json, not in
.claude-plugin/project-config.json. Update the gitignore comment
in all guide skills to say "contains project config" and update
admin skill auth reads to use the new path.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@asthabh23 asthabh23 merged commit c6a61b0 into main May 29, 2026
9 checks passed
@asthabh23 asthabh23 deleted the project-mgmt-ops branch May 29, 2026 10:14
@github-actions
Copy link
Copy Markdown

🎉 This PR is included in version 1.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants