Skip to content

docs: add GLOSSARY.md + docs/solutions/ archive#199

Merged
ktn-jamf merged 4 commits into
mainfrom
docs/glossary-and-solutions
May 11, 2026
Merged

docs: add GLOSSARY.md + docs/solutions/ archive#199
ktn-jamf merged 4 commits into
mainfrom
docs/glossary-and-solutions

Conversation

@ktn-jamf
Copy link
Copy Markdown
Collaborator

Summary

Two docs-only artifacts inspired by cli-printing-press, designed to compound over time as searchable institutional memory.

  • docs/GLOSSARY.md — canonical terms for jamf-cli's overlapping vocabulary (Pro vs Platform vs Classic, blueprint vs config profile, smart vs static group, scope vs target, MDM command vs declaration, ADE vs DEP).
  • docs/solutions/ — categorized postmortems and design-pattern docs with YAML frontmatter (title, date, category, module, problem_type, severity, applies_when, tags). Five category subdirs matching cli-printing-press: best-practices/, conventions/, design-patterns/, logic-errors/, security-issues/. Two seed entries.
  • CLAUDE.md — adds a "Read first" section so future Claude Code sessions discover both at session start.

Why

Two pain points this fixes:

  1. Terminology round-trips. Every AI conversation has to relearn that "blueprint" means Platform/DDM, not Pro mobileconfig — and that "scope" (Pro) and "target" (Platform) are different fields with different APIs. The glossary closes that loop once.

  2. Repeated rediscovery. PRs fix(spinner): suppress loading spinner under NO_COLOR / --no-color #194 (spinner+NO_COLOR) and fix(version): honour -o json/yaml and split classic spec section #195 (version -v ignoring -o json) were both follow-up fixes for patterns that should have been caught the first time. The convention seed captures the rule so the next new command exercises the full output/flag matrix before merge.

Seed entries

Test plan

  • go build ./... — clean (docs-only change, but verified anyway)
  • go test ./... — full suite green
  • make lint — 0 issues
  • Frontmatter validates against the format documented in docs/solutions/README.md
  • CLAUDE.md "Read first" links resolve to the new files

Future seed entries

Worth adding (separate PRs, when motivated):

🤖 Generated with Claude Code

Two artifacts inspired by cli-printing-press, designed to compound over time
as institutional memory that future contributors (human and AI) can grep
before rediscovering the same patterns.

**docs/GLOSSARY.md** — canonical terms for jamf-cli's overlapping vocabulary:
Pro vs Platform vs Classic; blueprint vs config profile; smart vs static
group; scope vs target; MDM command vs declaration; ADE vs DEP; etc. Closes
the "which 'profile' / 'group' / 'policy' do you mean?" ambiguity that
costs a round-trip in every AI conversation.

**docs/solutions/** — categorized markdown postmortems with YAML frontmatter
(title, date, category, module, problem_type, severity, applies_when, tags).
Five category subdirs match cli-printing-press: best-practices, conventions,
design-patterns, logic-errors, security-issues. Two seed entries:

- conventions/output-flag-matrix-2026-05-08.md — exercise -o json/yaml/csv,
  --quiet, --no-color, --out-file for every new command before declaring
  done. Captures the lessons from #194 (spinner+NO_COLOR) and #195
  (version -v -o json).

- design-patterns/cobra-annotations-as-policy-2026-05-11.md — prefer Cobra
  Annotations for per-command policy metadata (lint:keep-flag, future
  mcp:hidden, jamf:destructive) over comment magic, separate registries,
  or per-tool allowlists. Captures the design choice from #198.

CLAUDE.md gets a "Read first" section pointing at both so future Claude
sessions discover them at session start.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…f.com

Validated the glossary against Jamf Product Documentation via Ask Jamf MCP.
Several entries had errors from working off codebase signals + training-era
knowledge rather than authoritative docs:

- **Scope (biggest correction):** Scope in Jamf Pro is the *unified*
  concept comprising three sub-functions: targets, limitations, exclusions.
  Targets are *part of* scope, not a separate Platform-only concept.
  Limitations and exclusions weren't in the glossary at all — added,
  along with the rule "exclusions always override targets and limitations."

- **Blueprint:** Originally described as "the Platform API's DDM container."
  Actually a Jamf Pro AND Jamf School feature, built on DDM, scoped to
  smart/static groups. Available in both products. Now also supports
  configuration-profile payloads alongside declarations.

- **DDM:** Was framed as "Apple's newer pull-based config model." Per
  Apple/Jamf docs, DDM is an *additive* layer on top of MDM, not a
  replacement. Devices apply declarations proactively and report state
  via the *status channel*. Added the status channel as its own entry.

- **PreStage enrollment:** Capitalization fix (capital S). Added the
  "settings sync with Apple every two minutes" detail.

- **ADE / DEP:** Per Jamf School docs, "DEP" is *explicitly* the formerly-
  used name. Tightened wording. Added Account-driven Device Enrollment as
  the macOS 14+ alternative to PreStage.

- **Compliance Benchmarks:** Built on the macOS Security Compliance Project
  (mSCP) framework — added context. The UI uses "benchmark templates" +
  "rules" + "ODVs"; "baseline" is the Platform-API/CLI term and creates a
  naming gap. Now documented as such instead of presented as a single layer.

- **Extension Attributes:** Added the auto-generated-per-benchmark pattern
  (`[Benchmark Name] - Failed Result List`).

Added a Sources section pointing at the learn.jamf.com docs consulted and
calling out that this is a point-in-time capture that should be updated as
product renames happen (DEP → ADE, Azure ID → Microsoft Entra ID, etc.).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@ktn-jamf ktn-jamf merged commit a754bd8 into main May 11, 2026
1 check passed
@ktn-jamf ktn-jamf deleted the docs/glossary-and-solutions branch May 11, 2026 16:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants