100 Commits
Author SHA1 Message Date
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