LearnNewsExamplesServices
Frontmatter
id12241
titleAudit and prioritize package.json discovery keywords
stateClosed
labels
documentationenhancementai
assigneesneo-gpt
createdAtMay 31, 2026, 6:27 AM
updatedAtMay 31, 2026, 12:23 PM
githubUrlhttps://github.com/neomjs/neo/issues/12241
authorneo-gpt
commentsCount0
parentIssue12225
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtMay 31, 2026, 12:23 PM

Audit and prioritize package.json discovery keywords

Closed v13.0.0/archive-v13-0-0-chunk-15 documentationenhancementai
neo-gpt
neo-gpt commented on May 31, 2026, 6:27 AM

Parent epic: #12225

Context

PR #12239 corrected the most obvious discovery-surface drift in package.json: the description now uses the concise organism apex, and several framework-trap / stale keywords were removed. The remaining keyword list still needs a separate pass. The operator explicitly called out that keyword ordering must be priority-based and that the team must genuinely challenge what belongs in the list at all.

V-B-A before filing:

  • origin/dev:package.json currently has 88 keywords after PR #12239.
  • The list mixes apex/Brain terms (agent-operating-system, active-hybrid-graphrag, dreamservice, professional-ai-engineering-team) with Body/application-engine terms (multi-threaded, multi-window, web-engine), generic JS terms (javascript, json, css), and product-example or low-signal terms (browser-email-client, web-based-email-client, monaco-editor, smooth-ui).
  • Duplicate sweep found historical archived keyword tickets (#6462, #6830, #8357) and active parent #12225 / completed #12227 context, but no active ticket dedicated to priority ordering plus keep/drop challenge.
  • Live GitHub search for open issues matching package.json keywords returned no duplicates.

The Problem

package.json keywords are a machine-facing and human-facing discovery surface. They are not the same as README prose, but they still encode Neo's identity. Leaving the current 88-keyword array in inherited order risks diluting the organism / Agent OS apex with generic or stale terms. It can also make the metadata read like SEO stuffing instead of a deliberate ranked signal.

This ticket must avoid an unsupported claim that npm keyword order directly determines ranking. The verified problem is narrower and enough: order and inclusion are consumed by humans, package registries, crawlers, agents, and downstream tooling as metadata. A high-noise list communicates poor priority even if a given registry treats the array as unordered.

The Architectural Reality

package.json is an ADR 0018 identity surface. It carries both:

  • FACT-adjacent package metadata (name, version, repository, scripts), which must remain mechanically correct.
  • FRAMING metadata (description, keywords), which must stay audience-segmented but compatible with the canonical apex from #12225 / ADR 0018.

PR #12239 intentionally performed a trap purge and first-pass recategorization; it did not perform a full priority taxonomy or inclusion audit. This follow-up owns that second pass.

The Fix

Audit and rewrite package.json keywords[] using an explicit priority taxonomy:

  1. Define the intended consumer model for the keyword surface: package registry search, machine/agent discovery, and cold human metadata scanning.
  2. Classify every current keyword as keep, drop, or defer, with one-line rationale.
  3. Reorder kept keywords by priority, not by append history or alphabetic convenience.
  4. Cap the list or explicitly justify retaining a larger count. High-value specificity beats broad stuffing.
  5. Keep the top cluster aligned with the current identity apex and concise machine register: organism / Agent OS / cross-model team / Neural Link / Active Hybrid GraphRAG / DreamService / self-healing / Body engine terms as appropriate.
  6. Challenge low-signal terms aggressively, especially app-example terms and generic tech terms that do not help the intended consumer understand what Neo is.

Contract Ledger Matrix

Target Surface Source of Authority Proposed Behavior Fallback Docs Evidence
package.json keywords[] #12225, ADR 0018, #12227 / PR #12239 Ordered by explicit priority taxonomy; every retained keyword supports identity-compatible discovery Leave existing keyword if removal risk is uncertain, but document rationale in PR body PR body audit table node -e / JSON parse plus printed ordered categories
Keyword inclusion audit This ticket Every current keyword gets keep / drop / defer rationale Defer only when a concrete follow-up owner/surface is named PR body Reviewer can verify no unclassified keyword remains
GitHub repo topics proposal (optional, out-of-tree) ADR 0018 Class 4 external-surface rule If package keywords imply topic changes, list exact proposed topics or intentional divergence No GitHub topic change if out of scope PR body Out-of-tree section Human/operator can apply or reject separately

Decision Record Impact

Aligned-with ADR 0018. No ADR change expected. If implementation discovers a new rule for keyword count/order semantics that should govern future identity updates, file a follow-up against the neo-identity-update skill rather than burying it in this ticket.

Acceptance Criteria

  • package.json remains valid JSON and the keywords array is intentionally ordered by a documented priority taxonomy.
  • The PR body includes a keep/drop/defer audit for every current keyword or an equivalent generated table.
  • The top keyword cluster reflects the Neo identity apex and machine-register framing, not the old web-framework/app-example center of gravity.
  • Low-signal, stale, generic, or misleading keywords are removed unless their retention is explicitly defended.
  • No forbidden framework-trap terms are reintroduced, including residual *-framework marketing terms.
  • If GitHub repo topics or other external metadata should differ from package.json, the PR body documents the exact proposed out-of-tree update or explains the intentional divergence.
  • Cross-family review is completed before merge per ADR 0018 identity-surface discipline.

Out of Scope

  • Rewriting the already-updated package.json description from PR #12239.
  • npm publication or registry-side experiments.
  • GitHub topic changes performed by an agent; proposals are allowed, operator application is separate.
  • Editing README, benefits docs, portal copy, or generated SEO output unless the keyword audit surfaces a narrowly scoped follow-up.

Avoided Traps

  • Keeping all 88 keywords because they already exist.
  • Alphabetizing the array and calling that priority.
  • SEO stuffing with generic terms that bury the apex.
  • Deleting all Body/application-engine terms and making the package undiscoverable to engine/runtime users.
  • Assuming npm ranking semantics without evidence.

Related

  • Parent: #12225
  • Follow-up to: #12227 / PR #12239
  • ADR 0018: Neo Identity Source-of-Truth Model

Origin Session ID: 87203e0b-c9ff-4a82-a67b-9a0dda760c32 Retrieval Hint: "package.json keywords priority ordering keep drop defer identity apex discovery metadata PR 12239"

tobiu referenced in commit 0d29e32 - "feat(identity): prioritize package discovery keywords (#12241) (#12242) on May 31, 2026, 12:23 PM
tobiu closed this issue on May 31, 2026, 12:23 PM