Rohit Ghumare
efebf78801
fix(course): keep one canonical MCP route
2026-08-23 18:06:53 +01:00
Rohit Ghumare
b1c094f06a
Merge remote-tracking branch 'origin/main' into HEAD
...
# Conflicts:
# .claude/skills/course-guide/SKILL.md
# .claude/skills/learn/SKILL.md
# .claude/skills/start-learning/SKILL.md
# .gitignore
# README.md
# i18n/ar/README.md
# i18n/de/README.md
# i18n/es/README.md
# i18n/fr/README.md
# i18n/hi/README.md
# i18n/it/README.md
# i18n/ja/README.md
# i18n/ko/README.md
# i18n/pt/README.md
# i18n/ru/README.md
# i18n/tr/README.md
# i18n/zh/README.md
# phases/13-tools-and-protocols/22-skills-and-agent-sdks/docs/en.md
# phases/13-tools-and-protocols/24-skill-discovery-and-progressive-disclosure/docs/en.md
# phases/13-tools-and-protocols/25-skill-invocation-and-routing/docs/en.md
# phases/13-tools-and-protocols/26-skill-permissions-sandboxes-and-trust/docs/en.md
# phases/13-tools-and-protocols/27-skill-evals-packaging-and-portability/docs/en.md
# phases/13-tools-and-protocols/README.md
# scripts/test_skill_artifact_bundles.py
# site/about.html
# site/assessment.html
# site/build.js
# site/catalog.html
# site/certification.html
# site/certifications.html
# site/figures-mcp.js
# site/glossary.html
# site/index.html
# site/lesson.html
# site/prereqs.html
# site/test_build_artifacts.js
# skills/course-guide/SKILL.md
# skills/learn/SKILL.md
# skills/start-learning/SKILL.md
2026-08-23 18:05:23 +01:00
Rohit Ghumare
18730ca15e
docs: remove unavailable star history embed
2026-08-23 18:04:55 +01:00
Rohit Ghumare
ce63280f25
Merge branch 'feat/agent-skills-course' into feat/course-site-learning-dx
2026-08-23 16:24:03 +01:00
Rohit Ghumare
177d81466b
fix(mcp): use required lesson header comments
2026-08-23 16:16:12 +01:00
Rohit Ghumare
9abd809bef
Merge branch 'feat/agent-skills-course' into feat/course-site-learning-dx
2026-08-23 15:48:46 +01:00
Rohit Ghumare
967e6d0fc3
fix(mcp): secure reproducible lesson state
2026-08-23 15:48:32 +01:00
Rohit Ghumare
8d42c71fbc
Merge branch 'feat/agent-skills-course' into feat/course-site-learning-dx
2026-08-23 15:28:21 +01:00
Rohit Ghumare
01be9f9119
fix(mcp): tighten notification and redirect validation
2026-08-23 15:27:55 +01:00
Rohit Ghumare
6a5b08d11e
Merge commit '1e904b38a80edf5f0a2c762b6069e6bbd9370b47' into feat/course-site-learning-dx
...
# Conflicts:
# .claude/skills/learn/SKILL.md
# .claude/skills/start-learning/SKILL.md
# site/lesson.html
# site/test_build_artifacts.js
# skills/learn/SKILL.md
# skills/start-learning/SKILL.md
2026-08-23 14:58:35 +01:00
Rohit Ghumare
1e904b38a8
fix(course): address review edge cases
2026-08-23 14:47:52 +01:00
Rohit Ghumare
0c6ba7f9c4
Merge remote-tracking branch 'origin/feat/agent-skills-course' into feat/course-site-learning-dx
...
# Conflicts:
# .claude/skills/learn/SKILL.md
# .claude/skills/start-learning/SKILL.md
# site/lesson.html
# site/test_build_artifacts.js
# skills/learn/SKILL.md
# skills/start-learning/SKILL.md
2026-08-23 14:02:21 +01:00
Rohit Ghumare
a95f46cbd9
fix(site): improve responsive learning navigation
2026-08-23 13:52:27 +01:00
Rohit Ghumare
c0de01059d
fix(site): validate learning and artifact boundaries
2026-08-23 13:51:03 +01:00
Rohit Ghumare
7c78c02769
fix(scripts): harden skill bundle installation
2026-08-23 13:51:03 +01:00
Rohit Ghumare
a30d6a2933
fix(agent-skills): align route prerequisites
2026-08-23 13:51:02 +01:00
Rohit Ghumare
6a16ccd924
fix(mcp-31): strengthen conformance checks
2026-08-23 13:50:26 +01:00
Rohit Ghumare
dca377f57b
fix(mcp-30): require secure remote endpoints
2026-08-23 13:50:26 +01:00
Rohit Ghumare
6c73c3afe6
fix(mcp-29): preserve completed request state
2026-08-23 13:50:25 +01:00
Rohit Ghumare
313646bf4f
fix(mcp-28): terminate unsafe cursor pagination
2026-08-23 13:50:25 +01:00
Rohit Ghumare
dbc10f14e7
fix(skills-26): validate approval policy shape
2026-08-23 13:50:24 +01:00
Rohit Ghumare
a5357a5b1d
fix(skills-25): deny unknown invocation actors
2026-08-23 13:50:24 +01:00
Rohit Ghumare
63afe21336
fix(skills-24): clarify discovery boundaries
2026-08-23 13:50:24 +01:00
Rohit Ghumare
a58916da3a
fix(mcp-23): validate task identifiers
2026-08-23 13:50:23 +01:00
Rohit Ghumare
f2f042faed
fix(mcp-18): enforce redirect and code lifetimes
2026-08-23 13:50:23 +01:00
Rohit Ghumare
57665c6dbe
fix(mcp-16): bind OAuth enrollment and code exchange
2026-08-23 13:50:23 +01:00
Rohit Ghumare
6672bc0684
fix(mcp-15): expire and consume continuation state
2026-08-23 13:50:22 +01:00
Rohit Ghumare
e58cab6959
fix(mcp-14): align lesson response metadata
2026-08-23 13:50:21 +01:00
Rohit Ghumare
b6f27cdaca
fix(mcp-12): make continuation state single-use
2026-08-23 13:50:21 +01:00
Rohit Ghumare
6ff4e05b8e
fix(mcp-11): isolate returned tool descriptors
2026-08-23 13:50:20 +01:00
Rohit Ghumare
73c31a8e28
fix(mcp-09): harden HTTP transport boundaries
2026-08-23 13:50:20 +01:00
Rohit Ghumare
f31ab4a543
fix(mcp-08): reuse strict response decoding
2026-08-23 13:50:20 +01:00
Rohit Ghumare
eb5c106ba1
fix(mcp-07): validate JSON-RPC request identifiers
2026-08-23 13:50:19 +01:00
Rohit Ghumare
7b86d16f35
fix(phase-11-14): classify MCP handler failures
2026-08-23 13:50:19 +01:00
Rohit Ghumare
2cc3a406d2
fix(cert-11): harden MCP integration contract
2026-08-23 13:50:18 +01:00
Rohit Ghumare
f8305f1fce
fix(site): preserve course UX compatibility
...
Bump shared asset cache keys and align copied-command guidance with the repository-root contract. Preserve legacy MCP learner state and keep reduced-motion controls accurately labeled.
2026-08-22 04:28:02 +01:00
Rohit Ghumare
07a5a3640d
feat(site): improve course-wide learning UX
...
Unify responsive lesson actions, focused paths, progress, accessible SVG motion, course entry routes, and the live GitHub learner signals across the static site.
2026-08-22 04:12:28 +01:00
Rohit Ghumare
9d34412899
docs(curriculum): improve GitHub learning entry points
...
Give repository-first learners consistent quick starts, runnable commands, and clearer phase navigation across every maintained language.
2026-08-22 04:12:14 +01:00
Rohit Ghumare
c408d01d06
refactor(curriculum): use canonical MCP learning path
...
Replace the technically inaccurate MCP Engineering label while preserving compatibility aliases and host-specific skill invocation guidance.
2026-08-22 04:12:01 +01:00
Rohit Ghumare
773d1c0f9f
docs(phase-13/27): sharpen skill release evidence
...
Turn portability and release-gate claims into staged, inspectable evidence before learners publish a skill package.
2026-08-22 04:11:30 +01:00
Rohit Ghumare
68bd9e0a81
docs(phase-13/26): teach sandbox boundaries visually
...
Show permissions, authority, and isolation as separate runtime boundaries learners can inspect before executing a skill.
2026-08-22 04:11:25 +01:00
Rohit Ghumare
80d9834a9f
docs(phase-13/25): clarify skill invocation routing
...
Separate user, agent, and nested-skill invocation paths with staged evidence instead of a single static flowchart.
2026-08-22 04:11:20 +01:00
Rohit Ghumare
7018bba75c
docs(phase-13/24): add interactive discovery figures
...
Make catalog discovery and progressive disclosure concrete through staged figures learners can inspect and replay.
2026-08-22 04:11:15 +01:00
Rohit Ghumare
74203cfa73
docs(phase-13/22): replace static skill diagrams
...
Give learners inspectable Agent Skills boundaries and real-host evidence without relying on generic Mermaid rendering.
2026-08-22 04:11:09 +01:00
Rohit Ghumare
81b884590b
feat(phase-04/01): make image fundamentals runnable offline
...
Keep the first vision exercise deterministic and dependency-compliant while teaching nearest, bilinear, and bicubic resizing from first principles.
2026-08-22 04:11:02 +01:00
Rohit Ghumare
107582d72e
feat(phase-00/01): add route-aware environment preflight
...
Let learners validate only the tools required for their chosen path, with actionable fixes and a clear first command.
2026-08-22 04:10:56 +01:00
Rohit Ghumare
770d6dc2ce
feat(mcp): add production engineering track
2026-08-21 18:02:18 +01:00
Rohit Ghumare
670d2c5f18
feat(skills): add a focused agent skills learner path
...
A dedicated route removes placement and navigation friction for focused learners.
2026-08-21 16:00:12 +01:00
Rohit Ghumare
33fd9bfdaa
docs(curriculum): index agent skills and stateless MCP
...
Learners need one coherent route through the skills track and current MCP sequence.
2026-08-21 15:59:55 +01:00
Rohit Ghumare
67db9192c3
feat(phase-19/13): modernize the MCP registry capstone
...
The production capstone must separate Registry publication from stateless runtime discovery.
2026-08-21 15:59:34 +01:00
Rohit Ghumare
860c4f8086
docs(phase-16/02): update MCP legacy comparison
...
The interoperability comparison should use the current stateless MCP lifecycle.
2026-08-21 15:59:33 +01:00
Rohit Ghumare
321f6c7874
docs(phase-13/27): add real-host release evidence
...
A production claim should require installed-host evidence beyond deterministic fixtures.
2026-08-21 15:59:33 +01:00
Rohit Ghumare
9474c16d52
docs(phase-13/26): clarify sandbox prerequisites
...
The safety lab needs explicit prerequisites and a viable conceptual fallback.
2026-08-21 15:59:33 +01:00
Rohit Ghumare
c87a848be7
docs(phase-13/24): clarify host discovery limits
...
Learners should distinguish known context budgets from host fallback behavior.
2026-08-21 15:59:33 +01:00
Rohit Ghumare
005b243206
fix(phase-13/23): make the capstone stateless
...
The ecosystem capstone must compose the same current contracts taught upstream.
2026-08-21 15:59:32 +01:00
Rohit Ghumare
adfaf96604
docs(phase-13/22): add a runnable skill quickstart
...
Beginners need an exact repository-root path from bundle inspection to host use.
2026-08-21 15:59:32 +01:00
Rohit Ghumare
47f366821c
feat(phase-13/18): teach production MCP authentication
...
Production auth should implement real PKCE, CIMD, and resource-bound caching.
2026-08-21 15:59:14 +01:00
Rohit Ghumare
a3d8726aa8
feat(phase-13/17): update gateway and registry contracts
...
Registry admission must separate publication identity from runtime discovery.
2026-08-21 15:59:14 +01:00
Rohit Ghumare
db6d26f67d
feat(phase-13/16): update MCP OAuth contracts
...
OAuth examples must bind issuers and resources while using current errors.
2026-08-21 15:59:14 +01:00
Rohit Ghumare
6b777bee00
feat(phase-13/15): update MCP threat boundaries
...
Threat modeling must cover current routing and MRTR state boundaries.
2026-08-21 15:59:13 +01:00
Rohit Ghumare
d0f5a768fc
feat(phase-13/14): update MCP Apps contracts
...
Apps learners need current bridge, subscription, and discovery boundaries.
2026-08-21 15:59:13 +01:00
Rohit Ghumare
9d783e2e2e
feat(phase-13/13): teach stateless MCP tasks
...
Task storage and subscriptions must survive cross-instance stateless requests.
2026-08-21 15:59:13 +01:00
Rohit Ghumare
3caa6772e5
feat(phase-13/12): teach roots and elicitation retries
...
Elicitation retries and roots handling need current capability and MRTR boundaries.
2026-08-21 15:59:12 +01:00
Rohit Ghumare
a362363359
feat(phase-13/11): teach per-request sampling
...
Sampling calls must carry current capabilities and stateless response semantics.
2026-08-21 15:59:12 +01:00
Rohit Ghumare
59938c9e9f
feat(phase-13/10): teach stateless resources and prompts
...
Resource and prompt discovery must reflect stateless cache and result contracts.
2026-08-21 15:58:55 +01:00
Rohit Ghumare
59c16c520c
feat(phase-13/09): teach current Streamable HTTP
...
Transport examples need the current POST-only lifecycle and notification behavior.
2026-08-21 15:58:54 +01:00
Rohit Ghumare
07cd9ea176
feat(phase-13/08): build a stateless MCP client
...
The client lab must negotiate every request without relying on session state.
2026-08-21 15:58:54 +01:00
Rohit Ghumare
232f673204
feat(phase-13/07): build a stateless MCP server
...
The server lab should model the protocol that new implementations actually ship.
2026-08-21 15:58:54 +01:00
Rohit Ghumare
db88fa75d0
feat(phase-13/06): teach stateless MCP fundamentals
...
Learners need the current per-request contract before building clients or servers.
2026-08-21 15:58:53 +01:00
Rohit Ghumare
5478b9b1e0
fix(phase-13/01): align tool terms with stateless MCP
...
The tool interface introduction should point to the current protocol vocabulary.
2026-08-21 15:58:53 +01:00
Rohit Ghumare
ccaab0c3ad
feat(phase-11/14): modernize MCP protocol contracts
...
The foundational MCP lesson must no longer teach the removed session lifecycle.
2026-08-21 15:58:53 +01:00
Rohit Ghumare
87809d267c
feat(certification/11): teach stateless MCP integration
...
Certification learners need the same stateless wire model as the production curriculum.
2026-08-21 15:58:52 +01:00
Rohit Ghumare
7a140310ed
docs(curriculum): index the agent skills mini-course
...
The expanded Phase 13 sequence needs consistent lesson links, durations, translations, and shared terminology across every learner entry point.
2026-08-21 13:28:11 +01:00
Rohit Ghumare
853595fdba
feat(skills): install and render complete skill bundles
...
Progressive-disclosure skills must keep companion references, scripts, assets, and evals intact across discovery, installation, and lesson rendering.
2026-08-21 13:28:02 +01:00
Rohit Ghumare
af2733e379
feat(phase-13/27): add the skill release gate
...
A distributable skill needs adversarial structure, routing, safety, artifact, provenance, installation, and portability evidence before release.
2026-08-21 13:27:55 +01:00
Rohit Ghumare
48fcc0dd88
feat(phase-13/26): teach skill sandbox and trust boundaries
...
Skill instructions are untrusted input, so authority must remain host-owned and every filesystem, network, and command boundary must fail closed.
2026-08-21 13:27:47 +01:00
Rohit Ghumare
cde14830cc
feat(phase-13/25): teach invocation policy and routing
...
Human, model, application, and skill activation need separate policy decisions before relevance ranking can be trusted.
2026-08-21 13:27:41 +01:00
Rohit Ghumare
1313dd966d
feat(phase-13/24): teach skill discovery and disclosure
...
A useful skill catalog needs explicit scope precedence and bounded progressive disclosure before instructions are loaded.
2026-08-21 13:27:34 +01:00
Rohit Ghumare
2ce4b76f07
fix(phase-13/23): make the ecosystem capstone accurate
...
The capstone should model current A2A operations, portable artifact metadata, and deterministic trace timing.
2026-08-21 13:27:27 +01:00
Rohit Ghumare
c4de929ab1
feat(phase-13/22): teach portable agent skill contracts
...
Agent skills need a portable contract before host-specific metadata and runtime policy can be reasoned about.
2026-08-21 13:27:21 +01:00
Rohit Ghumare
d5f26c1010
docs(readme): refresh traffic stats to 2026-06-07 (150.6K/241.7K)
2026-06-07 01:17:34 +01:00
Rohit Ghumare
a6cd747ad8
chore(site): rebuild data.js
2026-06-07 01:04:38 +01:00
Rohit Ghumare
b87a15a5fd
fix(build): sync lessons badge alt text too (CodeRabbit #256 )
2026-06-07 00:59:22 +01:00
Rohit Ghumare
fba601c913
fix(build): make syncReadme self-healing and surface stats errors
...
CodeRabbit on #256 :
- Insert-or-replace the README STATS block: if the markers are missing or
mangled, re-insert before "## How this works" instead of silently doing
nothing, so the README can't drift from site/stats.json.
- Replace the empty catch with a console.warn so a malformed stats.json is
visible. Kept it a warning, not a CI hard-fail: bad analytics JSON should
not break the whole site build.
2026-06-07 00:59:22 +01:00
Rohit Ghumare
c05e1f9238
docs(readme): add 30-day traffic proof, sourced from site/stats.json
...
145,598 readers and 234,496 page views (last 30 days) now show under the
hero. The numbers live in a single source (site/stats.json) and build.js
regenerates the README block on each build; it also keeps the lessons
badge in sync with the live count. Vercel has no analytics API, so refresh
stats.json from the dashboard and re-run build to propagate.
2026-06-07 00:59:22 +01:00
Rohit Ghumare
7e151e5fb4
fix(site): sync hardcoded curriculum counts to live total (473 -> 503)
...
PR #246 indexed 35 lessons (468 -> 503) but the marketing counts stayed
hardcoded: index/catalog/lesson/prereqs HTML and the command palette still
showed 473/435 lessons and 489 outputs, so the live site read stale.
build.js now rewrites every "<n> lessons / phases / outputs" string to the
count it computes, so these never drift again. Synced all pages to
503 lessons, 20 phases, 499 outputs.
2026-06-03 01:11:31 +01:00
Rohit Ghumare
a4accf6cc5
docs(site): index merged-but-unlisted lessons so they render on the site
...
35 completed lessons were merged to main but never wired into the site
source (README), so the catalog and lesson pages could not reach them.
- Phase 19 capstones 58-87 added to README (tracks E. Multimodal VLM,
F. Advanced RAG, G. Eval framework, H. Distributed train, I. Safety
harness); the phase-19 summary now reads 85 lessons / 9 deep-build tracks
- Phase 19 capstones 20-87 added to ROADMAP (it only listed 01-17)
- 5 cross-phase orphans wired into README + ROADMAP:
07/15 attention-variants, 07/16 speculative-decoding,
08/19 visual-autoregressive-var, 10/25 speculative-decoding,
10/34 gradient-checkpointing
- Corrected stale counts; rebuilt site/data.js (468 -> 503 lessons)
2026-06-03 01:00:33 +01:00
Rohit Ghumare
d571df8a7a
fix(site): repair table pipe rendering and theme-safe mermaid diagrams
...
Tables (closes #193 ):
- Parse table rows with an escape/code-aware splitter so escaped pipes
(P(X\|Y)) and pipes inside inline-code spans no longer shatter cells
- Normalize each row to the header column count
- Split markdown on /\r?\n/ so CRLF docs do not leak a trailing \r
Diagrams (closes #233 ):
- Replace the non-rendering block-beta protocol landscape in
phase 16/03 with a standard flowchart, and convert the stateDiagram
note from literal \n to block-note syntax
- Add a hue-preserving HSL fill transform to the mermaid renderer:
in dark mode light fills are darkened, in light mode dark fills are
lightened, so hard-coded node colors stay legible in both themes
2026-06-03 00:26:03 +01:00
Rohit Ghumare
7be1e78b17
refactor(mcp-auth): harden lesson 18 validator and client checks
...
- Check the issuer allow-list before any JWKS lookup/refresh so an
untrusted iss returns "iss not allowed" and never triggers a refresh
- Map each tool to its required scope; destructive notes.delete now needs
mcp:tools.delete (outside the minimal scopes_supported), so the step-up
bonus actually demonstrates an incremental scope gate
- Replace asserts in Client.discover/register with explicit ValueErrors so
the contract checks survive python -O
2026-06-02 23:59:34 +01:00
Rohit Ghumare
88ae6033fd
docs(mcp-auth): update lesson 18 to the MCP 2025-11-25 authorization spec
...
- Add Client ID Metadata Documents (CIMD) as the recommended default
enrollment path; reframe Dynamic Client Registration as a backwards-
compatible fallback (spec demoted DCR from SHOULD to MAY)
- Fix JWKS handling: separate authorization-server key rotation from
resource-server cache refresh. The cache-miss fallback now re-fetches
(idempotent) instead of minting a key, closing an attacker-controlled
key-creation DoS and a logic bug where the minted kid never matched
- Emit resource_metadata in WWW-Authenticate per RFC 9728 5.1
- Correct canonical resource URI guidance (path may be retained when it
identifies an individual server)
- Add RFC 9207 iss / mix-up attack coverage; distinguish audience replay
(access-token privilege restriction) from the confused-deputy problem
- Refresh IdP capability matrix, key terms, exercises, further reading
- Rewrite code/main.py and the skill output to match
Regenerate site/data.js.
2026-06-02 23:46:33 +01:00
Rohit Ghumare
d60af105e9
fix(phase-00/08): restore cell separator on Toggle terminal row
...
Previous pipe-escape sweep tripped on double-backtick inline code spans
and treated the cell separator as inline-code content. Reverts only
the spurious \| back to a plain pipe; the row is well-formed and the
inline code already uses balanced double backticks.
2026-05-27 21:52:14 +01:00
Rohit Ghumare
ea940baff0
fix(phase-11/17): drop 'primitive' for vendor classes; use class / abstraction / API / loop
2026-05-27 21:47:31 +01:00
Rohit Ghumare
2c9ad114a5
fix(phase-06/08): call the speaker-content split a decomposition, not a primitive
2026-05-27 21:47:31 +01:00
Rohit Ghumare
a954d3dcc1
fix(phase-05/15): say 'decompositions' instead of 'primitives' for LDA vs BERTopic
2026-05-27 21:47:31 +01:00
Rohit Ghumare
759b73d305
fix(phase-05/01): drop 'primitive' label for preprocessing steps
2026-05-27 21:47:31 +01:00
Rohit Ghumare
c09e649ac9
fix(phase-18/03): escape pipes inside inline code so markdown tables render
2026-05-27 21:28:07 +01:00
Rohit Ghumare
d5265625f1
fix(phase-18/02): escape pipes inside inline code so markdown tables render
2026-05-27 21:28:07 +01:00
Rohit Ghumare
6251305613
fix(phase-18/01): escape pipes inside inline code so markdown tables render
2026-05-27 21:28:07 +01:00
Rohit Ghumare
6501a14b90
fix(phase-13/10): escape pipes inside inline code so markdown tables render
2026-05-27 21:28:07 +01:00
Rohit Ghumare
2f3a9718a1
fix(phase-13/06): escape pipes inside inline code so markdown tables render
2026-05-27 21:28:07 +01:00