{"generatedAt":"2026-07-22T00:26:13.168Z","window":{"from":"2025-07-22T00:26:13.168Z","to":"2026-07-22T00:26:13.168Z"},"github":{"status":"ok","data":{"login":"stevekinney","profileUrl":"https://github.com/stevekinney","followers":3497,"publicRepositories":396,"totalStars":3917,"pullRequests":{"openNow":10,"mergedLastYear":1599},"commits":{"totalLastYear":4111,"privateContributionsLastYear":3254,"byRepository":[{"nameWithOwner":"stevekinney/weft","url":"https://github.com/stevekinney/weft","stargazerCount":7,"commits":951},{"nameWithOwner":"stevekinney/cinder","url":"https://github.com/stevekinney/cinder","stargazerCount":7,"commits":745},{"nameWithOwner":"stevekinney/stevekinney.net","url":"https://github.com/stevekinney/stevekinney.net","stargazerCount":24,"commits":479},{"nameWithOwner":"stevekinney/tribunal","url":"https://github.com/stevekinney/tribunal","stargazerCount":1,"commits":318},{"nameWithOwner":"stevekinney/stardust","url":"https://github.com/stevekinney/stardust","stargazerCount":1,"commits":263},{"nameWithOwner":"stevekinney/agent-bureau","url":"https://github.com/stevekinney/agent-bureau","stargazerCount":1,"commits":216},{"nameWithOwner":"stevekinney/vector-frankl","url":"https://github.com/stevekinney/vector-frankl","stargazerCount":5,"commits":180},{"nameWithOwner":"stevekinney/octavian","url":"https://github.com/stevekinney/octavian","stargazerCount":181,"commits":126},{"nameWithOwner":"stevekinney/silvan","url":"https://github.com/stevekinney/silvan","stargazerCount":0,"commits":103},{"nameWithOwner":"stevekinney/scrumlord","url":"https://github.com/stevekinney/scrumlord","stargazerCount":1,"commits":95}]},"issues":{"openedLastYear":858,"closedLastYear":795},"reviews":{"totalLastYear":43}}},"npm":{"status":"ok","data":{"packageCount":45,"totalDownloadsLastYear":553288,"topPackages":[{"name":"phone-formatter","description":"Parse and format telephone numbers.","version":"0.0.2","url":"https://www.npmjs.com/package/phone-formatter","downloadsLastYear":456398},{"name":"eslint-plugin-temporal","description":"ESLint plugin for Temporal TypeScript SDK - enforce best practices for workflows, activities, workers, and clients","version":"0.1.0","url":"https://www.npmjs.com/package/eslint-plugin-temporal","downloadsLastYear":38562},{"name":"build-temporal-workflow","description":"[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)","version":"0.4.0","url":"https://www.npmjs.com/package/build-temporal-workflow","downloadsLastYear":10695},{"name":"@lasercat/homogenaize","description":"A TypeScript-native library that provides a unified interface for multiple LLM providers (OpenAI, Anthropic, Gemini)","version":"1.2.41","url":"https://www.npmjs.com/package/@lasercat/homogenaize","downloadsLastYear":6451},{"name":"conversationalist","description":"A TypeScript library for managing AI conversation state","version":"0.5.0","url":"https://www.npmjs.com/package/conversationalist","downloadsLastYear":4433},{"name":"@lostgradient/cinder","description":"A Svelte 5 component library and design system focused on accessibility, theming, and per-component tree-shaking.","version":"0.16.1","url":"https://www.npmjs.com/package/@lostgradient/cinder","downloadsLastYear":4142},{"name":"@lostgradient/weft","description":"A Bun-native durable execution engine with pluggable key-value storage.","version":"0.12.0","url":"https://www.npmjs.com/package/@lostgradient/weft","downloadsLastYear":4092},{"name":"temporal-mcp","description":"Read-only MCP server for inspecting Temporal workflows, schedules, infrastructure, and documentation.","version":"0.2.1","url":"https://www.npmjs.com/package/temporal-mcp","downloadsLastYear":3059},{"name":"@lasercat/qna","description":"A TypeScript-native library template with bun","version":"1.0.25","url":"https://www.npmjs.com/package/@lasercat/qna","downloadsLastYear":2627},{"name":"github-webhook-schemas","description":"Zod schemas for validating GitHub webhook payloads","version":"1.1.0","url":"https://www.npmjs.com/package/github-webhook-schemas","downloadsLastYear":2605}]}},"courses":{"status":"ok","data":[{"slug":"aws","title":"Deploying Web Applications on AWS","description":"Deploy, scale, and secure frontend applications on AWS—from S3 and CloudFront to Lambda, API Gateway, and DynamoDB—without ever needing to become a full-time cloud engineer.","path":"/courses/aws","lessonCount":99,"lastUpdatedAt":"2026-06-29T17:20:24Z","lastCommit":{"message":"Track unlisted course lessons","url":"https://github.com/stevekinney/stevekinney.net/commit/44e3314531b392847bdd29215c44abc6bfe635c9","sha":"44e3314531b392847bdd29215c44abc6bfe635c9"}},{"slug":"enterprise-ui","title":"Enterprise UI","description":"Scale frontend applications beyond a single-team SPA with composition patterns, module federation, operational infrastructure, and migration strategies.","path":"/courses/enterprise-ui","lessonCount":50,"lastUpdatedAt":"2026-06-29T17:20:24Z","lastCommit":{"message":"Track unlisted course lessons","url":"https://github.com/stevekinney/stevekinney.net/commit/44e3314531b392847bdd29215c44abc6bfe635c9","sha":"44e3314531b392847bdd29215c44abc6bfe635c9"}},{"slug":"react-performance","title":"React Performance","description":"Profile, measure, and optimize React applications—from understanding reconciliation and re-renders to memoization, code splitting, and React 19's concurrent features.","path":"/courses/react-performance","lessonCount":67,"lastUpdatedAt":"2026-06-29T17:20:24Z","lastCommit":{"message":"Track unlisted course lessons","url":"https://github.com/stevekinney/stevekinney.net/commit/44e3314531b392847bdd29215c44abc6bfe635c9","sha":"44e3314531b392847bdd29215c44abc6bfe635c9"}},{"slug":"react-typescript","title":"React with TypeScript","description":"Build type-safe React applications with TypeScript and React 19—covering hooks, reducers, context, component APIs, and generics.","path":"/courses/react-typescript","lessonCount":95,"lastUpdatedAt":"2026-06-29T17:20:24Z","lastCommit":{"message":"Track unlisted course lessons","url":"https://github.com/stevekinney/stevekinney.net/commit/44e3314531b392847bdd29215c44abc6bfe635c9","sha":"44e3314531b392847bdd29215c44abc6bfe635c9"}},{"slug":"tailwind","title":"Tailwind","description":"Learn Tailwind CSS from utility-first fundamentals through design tokens, responsive layouts, dark mode, and the new features in Tailwind 4.","path":"/courses/tailwind","lessonCount":83,"lastUpdatedAt":"2026-06-29T17:20:24Z","lastCommit":{"message":"Track unlisted course lessons","url":"https://github.com/stevekinney/stevekinney.net/commit/44e3314531b392847bdd29215c44abc6bfe635c9","sha":"44e3314531b392847bdd29215c44abc6bfe635c9"}},{"slug":"full-stack-typescript","title":"Full Stack TypeScript","description":"Wire up end-to-end type safety across the frontend and backend with TypeScript, Express, Zod, tRPC, and branded types.","path":"/courses/full-stack-typescript","lessonCount":53,"lastUpdatedAt":"2026-06-29T17:20:24Z","lastCommit":{"message":"Track unlisted course lessons","url":"https://github.com/stevekinney/stevekinney.net/commit/44e3314531b392847bdd29215c44abc6bfe635c9","sha":"44e3314531b392847bdd29215c44abc6bfe635c9"}},{"slug":"visual-studio-code","title":"Visual Studio Code","description":"Get more out of VS Code with advanced workflows, debugging tools, customizations, extensions, and keyboard shortcuts that speed up daily development.","path":"/courses/visual-studio-code","lessonCount":54,"lastUpdatedAt":"2026-06-29T17:20:24Z","lastCommit":{"message":"Track unlisted course lessons","url":"https://github.com/stevekinney/stevekinney.net/commit/44e3314531b392847bdd29215c44abc6bfe635c9","sha":"44e3314531b392847bdd29215c44abc6bfe635c9"}},{"slug":"testing","title":"Introduction to Testing","description":"Build confidence in your codebase with practical testing techniques—covering assertions, mocking, integration tests, and testing strategy.","path":"/courses/testing","lessonCount":80,"lastUpdatedAt":"2026-06-29T17:20:24Z","lastCommit":{"message":"Track unlisted course lessons","url":"https://github.com/stevekinney/stevekinney.net/commit/44e3314531b392847bdd29215c44abc6bfe635c9","sha":"44e3314531b392847bdd29215c44abc6bfe635c9"}},{"slug":"figma","title":"Figma for Developers","description":"Learn Figma's developer-friendly features—constraints, auto layout, component properties, variables, and CSS generation—to bridge the gap between design and code.","path":"/courses/figma","lessonCount":30,"lastUpdatedAt":"2026-06-29T17:20:24Z","lastCommit":{"message":"Track unlisted course lessons","url":"https://github.com/stevekinney/stevekinney.net/commit/44e3314531b392847bdd29215c44abc6bfe635c9","sha":"44e3314531b392847bdd29215c44abc6bfe635c9"}},{"slug":"storybook","title":"Building Design Systems in Storybook","description":"Build a scalable design system with Storybook—creating reusable components, writing interaction tests, implementing dark mode, and generating documentation.","path":"/courses/storybook","lessonCount":39,"lastUpdatedAt":"2026-06-29T17:20:24Z","lastCommit":{"message":"Track unlisted course lessons","url":"https://github.com/stevekinney/stevekinney.net/commit/44e3314531b392847bdd29215c44abc6bfe635c9","sha":"44e3314531b392847bdd29215c44abc6bfe635c9"}},{"slug":"ai-development","title":"Developing with AI Tools","description":"Learn practical workflows for Cursor, Claude Code, MCP, and agentic software development with current installation, context, permission, and review guidance.","path":"/courses/ai-development","lessonCount":43,"lastUpdatedAt":"2026-06-24T22:36:23Z","lastCommit":{"message":"Update AI Development course for Cursor and Claude Code (#127)","url":"https://github.com/stevekinney/stevekinney.net/commit/b86e1c0f6f4f02416ea506e4b35ef001a7dd6056","sha":"b86e1c0f6f4f02416ea506e4b35ef001a7dd6056"}},{"slug":"self-testing-ai-agents","title":"Self-Testing AI Agents","description":"Build the feedback loops that let coding agents catch their own mistakes—Playwright, visual regression, runtime probes, custom MCPs, review bots, a static layer, and CI—so you stop being the verification step.","path":"/courses/self-testing-ai-agents","lessonCount":91,"lastUpdatedAt":"2026-06-23T15:53:34Z","lastCommit":{"message":"docs: Update Cursor section to use native beforeShellExecution hooks (#125)","url":"https://github.com/stevekinney/stevekinney.net/commit/0b806919c99ffb6dcf3e999b529deddc5d2d052f","sha":"0b806919c99ffb6dcf3e999b529deddc5d2d052f"}},{"slug":"python-ai","title":"AI Fundamentals with Python","description":"Get hands-on with AI development using Python and Hugging Face—from tokenization and attention to fine-tuning models and generating images with Stable Diffusion.","path":"/courses/python-ai","lessonCount":12,"lastUpdatedAt":"2026-04-23T12:09:47Z","lastCommit":{"message":"Optimize website build pipeline (#89)","url":"https://github.com/stevekinney/stevekinney.net/commit/273abf6c3e1f9af49f5b7e036423ba637e7e4019","sha":"273abf6c3e1f9af49f5b7e036423ba637e7e4019"}},{"slug":"web-security","title":"Web Security","description":"Understand modern web security fundamentals—from authentication and authorization to XSS, CSRF, and practical mitigation techniques.","path":"/courses/web-security","lessonCount":0,"lastUpdatedAt":"2026-04-23T12:09:47Z","lastCommit":{"message":"Optimize website build pipeline (#89)","url":"https://github.com/stevekinney/stevekinney.net/commit/273abf6c3e1f9af49f5b7e036423ba637e7e4019","sha":"273abf6c3e1f9af49f5b7e036423ba637e7e4019"}}]}}