Skip to content

feat: lock positioning + rewrite hero around canonical-source framing#25

Merged
ayhammouda merged 4 commits into
mainfrom
feat/positioning
May 14, 2026
Merged

feat: lock positioning + rewrite hero around canonical-source framing#25
ayhammouda merged 4 commits into
mainfrom
feat/positioning

Conversation

@ayhammouda
Copy link
Copy Markdown
Owner

@ayhammouda ayhammouda commented May 14, 2026

Summary

First wave of the v0.1.5 launch coordination (PR #1 of 6 per CHANGE-REQUEST-v0.1.5-launch.md).

  • Lock positioning sentence (decision §9.1) in .planning/POSITIONING.md as the single source of truth for the launch wave.
  • Rewrite the README hero: move the positioning sentence above the badge row; replace the existing two-paragraph opening with a wedge-forward "Built for the moment your agent needs…" paragraph.
  • Align glama.json, server.json, and pyproject.toml descriptions with the locked positioning. All three now carry the "always free, always MIT" anchor per decision §9.5.

Out of scope (separate PRs):

  • Badge URLs still reference ayhammouda/python-docs-mcp-server — those will be updated by the upcoming repo rename PR.
  • PRE-PYPI install fences in README — owned by the v0.1.5 release PR.
  • AGENTS.md and .planning/ skeletons — owned by the phase-backlog PR.

Test plan

  • README renders cleanly on GitHub (hero, badge row, descriptive paragraph in expected order)
  • glama.json and server.json parse as valid JSON
  • pyproject.toml parses as valid TOML; PyPI summary character count is within the 512-char limit
  • CI green (ci.yml, security.yml, codeql.yml)
  • Locked positioning sentence in .planning/POSITIONING.md matches verbatim in README hero, glama/server/pyproject descriptions

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation
    • Updated project positioning and public descriptions to portray the server as a canonical Python stdlib oracle for AI coding agents, emphasizing offline operation, exact symbols/sections/version matching, always-free MIT licensing, and token-frugal behavior.
    • Added a locked positioning note with required verbatim phrasing and guidance for sanctioned adapted variants and downstream descriptions.

Review Change Stack

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 14, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 00af960e-0ed9-4f1b-858a-564f2bcd72a8

📥 Commits

Reviewing files that changed from the base of the PR and between 14adf1c and 25032b0.

📒 Files selected for processing (2)
  • .planning/POSITIONING.md
  • pyproject.toml
✅ Files skipped from review due to trivial changes (1)
  • .planning/POSITIONING.md

📝 Walkthrough

Walkthrough

This PR synchronizes project positioning across planning documentation and public-facing metadata. A positioning decision establishes the canonical messaging for python-docs-mcp-server as an offline Python stdlib oracle, then applies that messaging consistently to README, package metadata, and service configuration files.

Changes

Positioning Update to Python Stdlib Oracle Messaging

Layer / File(s) Summary
Positioning decision and messaging definition
.planning/POSITIONING.md
Locked positioning decision 9.1 dated 2026-05-14 defines the canonical sentence describing python-docs-mcp-server as a free, MIT-licensed, token-frugal Python stdlib oracle and explicitly lists target files where the sentence must appear verbatim.
Public-facing metadata and documentation
README.md, glama.json, pyproject.toml, server.json
README tagline and description, plus package metadata fields in glama.json, pyproject.toml, and server.json, are updated to use the canonical oracle positioning language, emphasizing offline availability, exact symbol/section/version matching, and free MIT-licensed access.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Poem

🐰 A rabbit hops through files with glee,
Positioning clear for all to see—
"Python's oracle," the words now say,
Offline, free, and here to stay!
Consistency blooms, decisions made,
No web-fetch games, just local aid. ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main changes: locking the positioning statement and rewriting the README hero section around a canonical-source framing. It is concise, specific, and clearly conveys the primary intent of the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/positioning

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.planning/POSITIONING.md:
- Around line 7-14: The section starting with the heading "Use verbatim in:" and
its bullet list (the lines listing README.md hero, glama.json description,
server.json description, GitHub repo About text, LAUNCH-POST.md lede, Talk bio)
reads like an enforceable policy; change it to a historical/archival statement
instead (e.g., "Applied in README.md, glama.json, server.json, GitHub About,
LAUNCH-POST.md, and Talk bio on 2026-05-14") and remove language that prescribes
current enforcement; keep any enforcement rules out of .planning/ and ensure
live enforcement remains in the appropriate live docs/checks.

In `@glama.json`:
- Line 3: The "description" value must exactly match the locked positioning
sentence; update the JSON entry for the "description" key so its string is
replaced verbatim with: For AI coding agents writing Python the canonical Python
stdlib oracle. Exact symbols, exact sections, exact versions — offline, always
free, always MIT, token-frugal. Ensure there are no added punctuation, line
breaks, or rephrasing (do this change in the "description" field).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 9fa7c448-6aed-4e74-b98b-2aea2f2317c2

📥 Commits

Reviewing files that changed from the base of the PR and between 147a9ac and 14adf1c.

📒 Files selected for processing (5)
  • .planning/POSITIONING.md
  • README.md
  • glama.json
  • pyproject.toml
  • server.json

Comment thread .planning/POSITIONING.md Outdated
Comment on lines +7 to +14
**Use verbatim in:**

- `README.md` hero
- `glama.json` `description`
- `server.json` `description`
- GitHub repo `About` text
- `LAUNCH-POST.md` lede
- Talk bio
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Avoid normative “source-of-truth” directives in .planning/.

Lines 7–14 are written as enforceable policy (“Use verbatim in”), which conflicts with the rule that .planning/ is archival history, not live truth. Rephrase this section as a historical record (e.g., “Applied in … on 2026-05-14”) and keep enforcement in live docs/checks.

As per coding guidelines, ".planning/**: Treat .planning/ directory as archival project history, not live repo truth".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.planning/POSITIONING.md around lines 7 - 14, The section starting with the
heading "Use verbatim in:" and its bullet list (the lines listing README.md
hero, glama.json description, server.json description, GitHub repo About text,
LAUNCH-POST.md lede, Talk bio) reads like an enforceable policy; change it to a
historical/archival statement instead (e.g., "Applied in README.md, glama.json,
server.json, GitHub About, LAUNCH-POST.md, and Talk bio on 2026-05-14") and
remove language that prescribes current enforcement; keep any enforcement rules
out of .planning/ and ensure live enforcement remains in the appropriate live
docs/checks.

Comment thread glama.json
@@ -1,5 +1,6 @@
{
"$schema": "https://glama.ai/mcp/schemas/server.json",
"description": "For AI coding agents writing Python: the canonical Python stdlib oracle. Exact symbols, exact sections, exact versions — offline, always free, always MIT, token-frugal.",
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Use the locked positioning sentence verbatim in metadata.

Line 3 does not match the locked sentence wording/order (it rephrases with : and sentence split), so it fails the “verbatim across files” objective.

Suggested fix
-  "description": "For AI coding agents writing Python: the canonical Python stdlib oracle. Exact symbols, exact sections, exact versions — offline, always free, always MIT, token-frugal.",
+  "description": "For AI coding agents writing Python, python-docs-mcp-server is the canonical Python stdlib oracle: exact symbols, exact sections, exact versions — offline, always free, always MIT, token-frugal.",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"description": "For AI coding agents writing Python: the canonical Python stdlib oracle. Exact symbols, exact sections, exact versions — offline, always free, always MIT, token-frugal.",
"description": "For AI coding agents writing Python, python-docs-mcp-server is the canonical Python stdlib oracle: exact symbols, exact sections, exact versions — offline, always free, always MIT, token-frugal.",
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@glama.json` at line 3, The "description" value must exactly match the locked
positioning sentence; update the JSON entry for the "description" key so its
string is replaced verbatim with: For AI coding agents writing Python the
canonical Python stdlib oracle. Exact symbols, exact sections, exact versions —
offline, always free, always MIT, token-frugal. Ensure there are no added
punctuation, line breaks, or rephrasing (do this change in the "description"
field).

…mmary

Cross-AI review (Codex P3) caught that .planning/POSITIONING.md claimed
'Use verbatim in: glama.json / server.json' while the actual descriptions
deliberately vary by surface (long marketing form vs medium vs PyPI-short).
Fix: split into two lists — surfaces that use the sentence verbatim
(README hero, GitHub About, launch post, talk bio) vs surfaces that adapt
for length but preserve the three key phrases.

Also: add 'token-frugal' to pyproject.toml description so all four
machine-read positioning surfaces carry the full anchor consistently.
Prior Claude reviewer had flagged this as deferrable to PR #3; folding
it in here makes POSITIONING.md's new 'preserve all three key phrases'
contract internally consistent.

Char count: pyproject.toml description = 154 chars (under PyPI's 512 limit).
Key-phrase coverage verified: 3 phrases x 4 surfaces = 12/12 present.
@ayhammouda ayhammouda merged commit b0f09b8 into main May 14, 2026
8 checks passed
ayhammouda added a commit that referenced this pull request May 14, 2026
…tdlib-mcp (#26)

PR #2 of 6 in v0.1.5 launch wave. Renames in-repo GitHub URL references to the new repo name (python-stdlib-mcp). PyPI package name (python-docs-mcp-server) unchanged per CR §9.2. Rebased onto post-PR-#25 main; combines new positioning description with new repo URLs in server.json.
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.

1 participant