ai-devkit 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/README.md +20 -87
  3. package/dist/__tests__/lib/Config.test.d.ts +2 -0
  4. package/dist/__tests__/lib/Config.test.d.ts.map +1 -0
  5. package/dist/__tests__/lib/Config.test.js +281 -0
  6. package/dist/__tests__/lib/Config.test.js.map +1 -0
  7. package/dist/__tests__/lib/EnvironmentSelector.test.d.ts +2 -0
  8. package/dist/__tests__/lib/EnvironmentSelector.test.d.ts.map +1 -0
  9. package/dist/__tests__/lib/EnvironmentSelector.test.js +117 -0
  10. package/dist/__tests__/lib/EnvironmentSelector.test.js.map +1 -0
  11. package/dist/__tests__/lib/PhaseSelector.test.d.ts +2 -0
  12. package/dist/__tests__/lib/PhaseSelector.test.d.ts.map +1 -0
  13. package/dist/__tests__/lib/PhaseSelector.test.js +77 -0
  14. package/dist/__tests__/lib/PhaseSelector.test.js.map +1 -0
  15. package/dist/__tests__/util/env.test.d.ts +2 -0
  16. package/dist/__tests__/util/env.test.d.ts.map +1 -0
  17. package/dist/__tests__/util/env.test.js +166 -0
  18. package/dist/__tests__/util/env.test.js.map +1 -0
  19. package/dist/commands/init.d.ts +2 -2
  20. package/dist/commands/init.d.ts.map +1 -1
  21. package/dist/commands/init.js +54 -73
  22. package/dist/commands/init.js.map +1 -1
  23. package/dist/commands/phase.d.ts.map +1 -1
  24. package/dist/commands/phase.js +1 -5
  25. package/dist/commands/phase.js.map +1 -1
  26. package/dist/lib/Config.d.ts +5 -2
  27. package/dist/lib/Config.d.ts.map +1 -1
  28. package/dist/lib/Config.js +18 -3
  29. package/dist/lib/Config.js.map +1 -1
  30. package/dist/lib/EnvironmentSelector.d.ts +7 -0
  31. package/dist/lib/EnvironmentSelector.d.ts.map +1 -0
  32. package/dist/lib/EnvironmentSelector.js +62 -0
  33. package/dist/lib/EnvironmentSelector.js.map +1 -0
  34. package/dist/lib/PhaseSelector.d.ts +8 -0
  35. package/dist/lib/PhaseSelector.d.ts.map +1 -0
  36. package/dist/lib/PhaseSelector.js +58 -0
  37. package/dist/lib/PhaseSelector.js.map +1 -0
  38. package/dist/lib/TemplateManager.d.ts +5 -5
  39. package/dist/lib/TemplateManager.d.ts.map +1 -1
  40. package/dist/lib/TemplateManager.js +73 -66
  41. package/dist/lib/TemplateManager.js.map +1 -1
  42. package/dist/types.d.ts +9 -2
  43. package/dist/types.d.ts.map +1 -1
  44. package/dist/types.js.map +1 -1
  45. package/dist/util/env.d.ts +11 -0
  46. package/dist/util/env.d.ts.map +1 -0
  47. package/dist/util/env.js +109 -0
  48. package/dist/util/env.js.map +1 -0
  49. package/jest.config.js +22 -0
  50. package/package.json +16 -11
  51. package/templates/commands/capture-knowledge.md +46 -0
  52. package/templates/commands/debug.md +45 -0
  53. package/templates/{env/cursor/commands → commands}/new-requirement.md +1 -1
  54. package/web/.nojekyll +2 -0
  55. package/web/CNAME +1 -0
  56. package/web/README.md +100 -0
  57. package/web/app/favicon.ico +0 -0
  58. package/web/app/globals.css +122 -0
  59. package/web/app/layout.tsx +106 -0
  60. package/web/app/page.tsx +119 -0
  61. package/web/app/roadmap/page.tsx +150 -0
  62. package/web/app/robots.ts +16 -0
  63. package/web/app/sitemap.ts +46 -0
  64. package/web/app/vision/page.tsx +49 -0
  65. package/web/components/Footer.tsx +81 -0
  66. package/web/components/GitHubButton.tsx +49 -0
  67. package/web/components/GitHubStars.tsx +27 -0
  68. package/web/components/Header.tsx +108 -0
  69. package/web/components/MarkdownContent.tsx +35 -0
  70. package/web/components/SkipToContent.tsx +11 -0
  71. package/web/content/pages/vision.md +42 -0
  72. package/web/content/roadmap/1-web.md +9 -0
  73. package/web/content/roadmap/2-integrations.md +7 -0
  74. package/web/content/roadmap/3-cli-enhancements.md +8 -0
  75. package/web/content/roadmap/4-local-memory.md +8 -0
  76. package/web/eslint.config.mjs +18 -0
  77. package/web/lib/GitHubContext.tsx +57 -0
  78. package/web/lib/content/loader.ts +152 -0
  79. package/web/lib/content/types.ts +37 -0
  80. package/web/lib/utils.ts +12 -0
  81. package/web/next.config.ts +11 -0
  82. package/web/package-lock.json +8837 -0
  83. package/web/package.json +34 -0
  84. package/web/postcss.config.mjs +7 -0
  85. package/web/public/file.svg +1 -0
  86. package/web/public/globe.svg +1 -0
  87. package/web/public/next.svg +1 -0
  88. package/web/public/vercel.svg +1 -0
  89. package/web/public/window.svg +1 -0
  90. package/templates/env/claude/CLAUDE.md +0 -52
  91. package/templates/env/claude/commands/code-review.md +0 -81
  92. package/templates/env/claude/commands/execute-plan.md +0 -71
  93. package/templates/env/claude/commands/new-requirement.md +0 -127
  94. package/templates/env/claude/commands/update-planning.md +0 -61
  95. package/templates/env/cursor/commands/check-implementation.md +0 -21
  96. package/templates/env/cursor/commands/review-design.md +0 -11
  97. package/templates/env/cursor/commands/review-requirements.md +0 -9
  98. package/templates/env/cursor/commands/writing-test.md +0 -44
  99. package/templates/env/cursor/rules/ai-devkit.md +0 -51
  100. /package/templates/{env/claude/commands → commands}/check-implementation.md +0 -0
  101. /package/templates/{env/cursor/commands → commands}/code-review.md +0 -0
  102. /package/templates/{env/cursor/commands → commands}/execute-plan.md +0 -0
  103. /package/templates/{env/claude/commands → commands}/review-design.md +0 -0
  104. /package/templates/{env/claude/commands → commands}/review-requirements.md +0 -0
  105. /package/templates/{env/cursor/commands → commands}/update-planning.md +0 -0
  106. /package/templates/{env/claude/commands → commands}/writing-test.md +0 -0
@@ -0,0 +1,150 @@
1
+ import { getRoadmap } from '@/lib/content/loader';
2
+ import MarkdownContent from '@/components/MarkdownContent';
3
+ import type { Metadata } from 'next';
4
+
5
+ export const metadata: Metadata = {
6
+ title: 'Roadmap | AI DevKit',
7
+ description: 'The development roadmap for AI DevKit - see what we\'re building and where we\'re headed.',
8
+ };
9
+
10
+ const statusColors = {
11
+ 'planned': 'bg-gray-100 text-gray-800 border-gray-300',
12
+ 'in-progress': 'bg-blue-50 text-blue-800 border-blue-300',
13
+ 'completed': 'bg-green-50 text-green-800 border-green-300',
14
+ 'on-hold': 'bg-yellow-50 text-yellow-800 border-yellow-300',
15
+ };
16
+
17
+ const statusLabels = {
18
+ 'planned': 'Planned',
19
+ 'in-progress': 'In Progress',
20
+ 'completed': 'Completed',
21
+ 'on-hold': 'On Hold',
22
+ };
23
+
24
+ export default function RoadmapPage() {
25
+ const roadmapItems = getRoadmap();
26
+
27
+ const groupedItems = {
28
+ 'in-progress': roadmapItems.filter(item => item.metadata.status === 'in-progress'),
29
+ 'planned': roadmapItems.filter(item => item.metadata.status === 'planned'),
30
+ 'completed': roadmapItems.filter(item => item.metadata.status === 'completed'),
31
+ 'on-hold': roadmapItems.filter(item => item.metadata.status === 'on-hold'),
32
+ };
33
+
34
+ return (
35
+ <div className="bg-white py-16">
36
+ <div className="mx-auto max-w-5xl px-4 sm:px-6 lg:px-8">
37
+ <h1 className="text-4xl md:text-5xl font-bold mb-4">Roadmap</h1>
38
+
39
+ <p className="text-xl text-gray-600 mb-12">
40
+ Our development roadmap shows what we're working on and what's coming next for AI DevKit.
41
+ </p>
42
+
43
+ {roadmapItems.length === 0 ? (
44
+ <div className="bg-gray-50 border border-gray-200 rounded-lg p-8">
45
+ <p className="text-gray-600">
46
+ Roadmap items will be added soon. Check back later or follow us on GitHub for updates.
47
+ </p>
48
+ </div>
49
+ ) : (
50
+ <div className="space-y-12">
51
+ {groupedItems['in-progress'].length > 0 && (
52
+ <section>
53
+ <h2 className="text-2xl font-bold mb-6 flex items-center gap-3">
54
+ <span className="w-3 h-3 bg-blue-500 rounded-full"></span>
55
+ In Progress
56
+ </h2>
57
+ <div className="space-y-6">
58
+ {groupedItems['in-progress'].map((item, index) => (
59
+ <RoadmapItem key={index} item={item} />
60
+ ))}
61
+ </div>
62
+ </section>
63
+ )}
64
+
65
+ {groupedItems['planned'].length > 0 && (
66
+ <section>
67
+ <h2 className="text-2xl font-bold mb-6 flex items-center gap-3">
68
+ <span className="w-3 h-3 bg-gray-400 rounded-full"></span>
69
+ Planned
70
+ </h2>
71
+ <div className="space-y-6">
72
+ {groupedItems['planned'].map((item, index) => (
73
+ <RoadmapItem key={index} item={item} />
74
+ ))}
75
+ </div>
76
+ </section>
77
+ )}
78
+
79
+ {groupedItems['completed'].length > 0 && (
80
+ <section>
81
+ <h2 className="text-2xl font-bold mb-6 flex items-center gap-3">
82
+ <span className="w-3 h-3 bg-green-500 rounded-full"></span>
83
+ Completed
84
+ </h2>
85
+ <div className="space-y-6">
86
+ {groupedItems['completed'].map((item, index) => (
87
+ <RoadmapItem key={index} item={item} />
88
+ ))}
89
+ </div>
90
+ </section>
91
+ )}
92
+ </div>
93
+ )}
94
+
95
+ <div className="mt-16 pt-8 border-t border-gray-200">
96
+ <div className="bg-gray-50 p-8 rounded-lg border border-gray-200">
97
+ <h2 className="text-2xl font-bold mb-4">Have ideas?</h2>
98
+ <p className="text-gray-600 mb-6">
99
+ We'd love to hear your suggestions for AI DevKit. Open an issue or discussion on GitHub to share your thoughts.
100
+ </p>
101
+ <div className="flex flex-col sm:flex-row gap-4">
102
+ <a
103
+ href="https://github.com/codeaholicguy/ai-devkit/issues/new"
104
+ target="_blank"
105
+ rel="noopener noreferrer"
106
+ className="px-6 py-3 bg-black text-white rounded-lg font-medium hover:bg-gray-800 transition-colors no-underline text-center"
107
+ >
108
+ Submit an Idea
109
+ </a>
110
+ <a
111
+ href="https://github.com/codeaholicguy/ai-devkit/discussions"
112
+ target="_blank"
113
+ rel="noopener noreferrer"
114
+ className="px-6 py-3 border border-black rounded-lg font-medium hover:bg-gray-50 transition-colors no-underline text-center"
115
+ >
116
+ Join Discussion
117
+ </a>
118
+ </div>
119
+ </div>
120
+ </div>
121
+ </div>
122
+ </div>
123
+ );
124
+ }
125
+
126
+ function RoadmapItem({ item }: { item: { metadata: any; content: string } }) {
127
+ const statusColor = statusColors[item.metadata.status as keyof typeof statusColors] || statusColors.planned;
128
+ const statusLabel = statusLabels[item.metadata.status as keyof typeof statusLabels] || 'Unknown';
129
+
130
+ return (
131
+ <div className="border border-gray-200 rounded-lg p-6 hover:border-gray-400 transition-colors">
132
+ <div className="flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4 mb-4">
133
+ <h3 className="text-xl font-bold">{item.metadata.title}</h3>
134
+ <div className="flex gap-2 flex-wrap">
135
+ <span className={`px-3 py-1 rounded-full text-sm font-medium border ${statusColor}`}>
136
+ {statusLabel}
137
+ </span>
138
+ {item.metadata.timeframe && (
139
+ <span className="px-3 py-1 rounded-full text-sm font-medium bg-gray-100 text-gray-700 border border-gray-300">
140
+ {item.metadata.timeframe}
141
+ </span>
142
+ )}
143
+ </div>
144
+ </div>
145
+ <div className="text-gray-700 leading-relaxed">
146
+ {item.content}
147
+ </div>
148
+ </div>
149
+ );
150
+ }
@@ -0,0 +1,16 @@
1
+ import { MetadataRoute } from 'next';
2
+
3
+ export const dynamic = 'force-static';
4
+
5
+ export default function robots(): MetadataRoute.Robots {
6
+ const baseUrl = process.env.NEXT_PUBLIC_SITE_URL || 'https://ai-devkit.com';
7
+
8
+ return {
9
+ rules: {
10
+ userAgent: '*',
11
+ allow: '/',
12
+ },
13
+ sitemap: `${baseUrl}/sitemap.xml`,
14
+ };
15
+ }
16
+
@@ -0,0 +1,46 @@
1
+ import { MetadataRoute } from 'next';
2
+ import { getAllDocPages, getAllPages, getRoadmap } from '@/lib/content/loader';
3
+
4
+ export const dynamic = 'force-static';
5
+
6
+ export default function sitemap(): MetadataRoute.Sitemap {
7
+ const baseUrl = process.env.NEXT_PUBLIC_SITE_URL || 'https://ai-devkit.com';
8
+
9
+ const staticRoutes = [
10
+ {
11
+ url: baseUrl,
12
+ lastModified: new Date(),
13
+ changeFrequency: 'weekly' as const,
14
+ priority: 1.0,
15
+ },
16
+ {
17
+ url: `${baseUrl}/docs`,
18
+ lastModified: new Date(),
19
+ changeFrequency: 'weekly' as const,
20
+ priority: 0.9,
21
+ },
22
+ {
23
+ url: `${baseUrl}/vision`,
24
+ lastModified: new Date(),
25
+ changeFrequency: 'monthly' as const,
26
+ priority: 0.8,
27
+ },
28
+ {
29
+ url: `${baseUrl}/roadmap`,
30
+ lastModified: new Date(),
31
+ changeFrequency: 'weekly' as const,
32
+ priority: 0.8,
33
+ },
34
+ ];
35
+
36
+ const docs = getAllDocPages();
37
+ const docRoutes = docs.map((doc) => ({
38
+ url: `${baseUrl}/docs/${doc.metadata.slug}`,
39
+ lastModified: new Date(),
40
+ changeFrequency: 'weekly' as const,
41
+ priority: 0.7,
42
+ }));
43
+
44
+ return [...staticRoutes, ...docRoutes];
45
+ }
46
+
@@ -0,0 +1,49 @@
1
+ import { getPage } from "@/lib/content/loader";
2
+ import MarkdownContent from "@/components/MarkdownContent";
3
+ import { notFound } from "next/navigation";
4
+ import type { Metadata } from "next";
5
+
6
+ export const metadata: Metadata = {
7
+ title: "Vision | AI DevKit",
8
+ description:
9
+ "The vision and purpose behind AI DevKit - bridging AI-assisted development with structured software engineering practices.",
10
+ };
11
+
12
+ export default function VisionPage() {
13
+ const page = getPage("vision");
14
+
15
+ if (!page) {
16
+ notFound();
17
+ }
18
+
19
+ return (
20
+ <div className="bg-white py-16">
21
+ <article className="mx-auto max-w-4xl px-4 sm:px-6 lg:px-8">
22
+ <MarkdownContent content={page.content} />
23
+ </article>
24
+ <div className="mt-16 pt-8 border-t border-gray-200 mx-auto max-w-4xl px-4 sm:px-6 lg:px-8">
25
+ <div className="bg-gray-50 p-8 rounded-lg border border-gray-200">
26
+ <h2 className="text-2xl font-bold mb-4">Ready to get started?</h2>
27
+ <p className="text-gray-600 mb-6">
28
+ See how AI DevKit can improve your development workflow with
29
+ structured practices and AI assistance.
30
+ </p>
31
+ <div className="flex flex-col sm:flex-row gap-4">
32
+ <a
33
+ href="/docs"
34
+ className="px-6 py-3 bg-black text-white rounded-lg font-medium hover:bg-gray-800 transition-colors no-underline text-center"
35
+ >
36
+ Get Started
37
+ </a>
38
+ <a
39
+ href="/roadmap"
40
+ className="px-6 py-3 border border-black rounded-lg font-medium hover:bg-gray-50 transition-colors no-underline text-center"
41
+ >
42
+ View Roadmap
43
+ </a>
44
+ </div>
45
+ </div>
46
+ </div>
47
+ </div>
48
+ );
49
+ }
@@ -0,0 +1,81 @@
1
+ export default function Footer() {
2
+ const currentYear = new Date().getFullYear();
3
+
4
+ return (
5
+ <footer className="border-t border-gray-200 mt-auto" role="contentinfo" aria-label="Site footer">
6
+ <div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 py-8">
7
+ <div className="grid grid-cols-1 md:grid-cols-3 gap-8">
8
+ <div>
9
+ <h3 className="text-sm font-bold mb-3">AI DevKit</h3>
10
+ <p className="text-sm text-gray-600 leading-relaxed">
11
+ A CLI toolkit for AI-assisted software development with phase templates and structured workflows.
12
+ </p>
13
+ </div>
14
+
15
+ <div>
16
+ <h3 className="text-sm font-bold mb-3">Resources</h3>
17
+ <ul className="space-y-2 text-sm">
18
+ <li>
19
+ <a href="/docs" className="text-gray-600 hover:text-black no-underline">
20
+ Documentation
21
+ </a>
22
+ </li>
23
+ <li>
24
+ <a href="/vision" className="text-gray-600 hover:text-black no-underline">
25
+ Vision
26
+ </a>
27
+ </li>
28
+ <li>
29
+ <a href="/roadmap" className="text-gray-600 hover:text-black no-underline">
30
+ Roadmap
31
+ </a>
32
+ </li>
33
+ <li>
34
+ <a
35
+ href="https://github.com/codeaholicguy/ai-devkit"
36
+ target="_blank"
37
+ rel="noopener noreferrer"
38
+ className="text-gray-600 hover:text-black no-underline"
39
+ >
40
+ GitHub
41
+ </a>
42
+ </li>
43
+ </ul>
44
+ </div>
45
+
46
+ <div>
47
+ <h3 className="text-sm font-bold mb-3">Community</h3>
48
+ <ul className="space-y-2 text-sm">
49
+ <li>
50
+ <a
51
+ href="https://github.com/codeaholicguy/ai-devkit/issues"
52
+ target="_blank"
53
+ rel="noopener noreferrer"
54
+ className="text-gray-600 hover:text-black no-underline"
55
+ >
56
+ Issues
57
+ </a>
58
+ </li>
59
+ <li>
60
+ <a
61
+ href="https://github.com/codeaholicguy/ai-devkit/blob/main/CHANGELOG.md"
62
+ target="_blank"
63
+ rel="noopener noreferrer"
64
+ className="text-gray-600 hover:text-black no-underline"
65
+ >
66
+ Changelog
67
+ </a>
68
+ </li>
69
+ </ul>
70
+ </div>
71
+ </div>
72
+
73
+ <div className="mt-8 pt-8 border-t border-gray-200">
74
+ <p className="text-sm text-gray-500 text-center">
75
+ © {currentYear} AI DevKit. Released under the MIT License.
76
+ </p>
77
+ </div>
78
+ </div>
79
+ </footer>
80
+ );
81
+ }
@@ -0,0 +1,49 @@
1
+ 'use client';
2
+
3
+ import { useGitHubStars } from '@/lib/GitHubContext';
4
+ import { formatStars } from '@/lib/utils';
5
+
6
+ interface GitHubButtonProps {
7
+ repo: string;
8
+ className?: string;
9
+ }
10
+
11
+ export default function GitHubButton({ repo, className = '' }: GitHubButtonProps) {
12
+ const { stars, loading } = useGitHubStars();
13
+
14
+ return (
15
+ <a
16
+ href={`https://github.com/${repo}`}
17
+ target="_blank"
18
+ rel="noopener noreferrer"
19
+ className={`inline-flex items-center gap-2 px-8 py-3 border border-black rounded-lg font-medium hover:bg-gray-50 transition-colors no-underline ${className}`}
20
+ >
21
+ <svg
22
+ className="w-5 h-5"
23
+ fill="currentColor"
24
+ viewBox="0 0 24 24"
25
+ aria-hidden="true"
26
+ >
27
+ <path
28
+ fillRule="evenodd"
29
+ d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"
30
+ clipRule="evenodd"
31
+ />
32
+ </svg>
33
+ <span>View on GitHub</span>
34
+ {!loading && stars !== null && (
35
+ <span className="flex items-center gap-1 px-2 py-0.5 bg-gray-100 rounded-full text-sm">
36
+ <svg
37
+ className="w-4 h-4 text-gray-700"
38
+ fill="currentColor"
39
+ viewBox="0 0 20 20"
40
+ aria-hidden="true"
41
+ >
42
+ <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" />
43
+ </svg>
44
+ {formatStars(stars)}
45
+ </span>
46
+ )}
47
+ </a>
48
+ );
49
+ }
@@ -0,0 +1,27 @@
1
+ 'use client';
2
+
3
+ import { useGitHubStars } from '@/lib/GitHubContext';
4
+ import { formatStars } from '@/lib/utils';
5
+
6
+ export default function GitHubStars() {
7
+ const { stars } = useGitHubStars();
8
+
9
+ if (stars === null) {
10
+ return null;
11
+ }
12
+
13
+ return (
14
+ <span className="inline-flex items-center gap-1 text-xs text-gray-600">
15
+ <svg
16
+ className="w-3 h-3"
17
+ fill="currentColor"
18
+ viewBox="0 0 20 20"
19
+ aria-hidden="true"
20
+ >
21
+ <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" />
22
+ </svg>
23
+ {formatStars(stars)}
24
+ </span>
25
+ );
26
+ }
27
+
@@ -0,0 +1,108 @@
1
+ 'use client';
2
+
3
+ import Link from 'next/link';
4
+ import { useState } from 'react';
5
+ import GitHubStars from './GitHubStars';
6
+
7
+ export default function Header() {
8
+ const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
9
+
10
+ const navigation = [
11
+ { name: 'Home', href: '/' },
12
+ { name: 'Documentation', href: '/docs' },
13
+ { name: 'Vision', href: '/vision' },
14
+ { name: 'Roadmap', href: '/roadmap' },
15
+ ];
16
+
17
+ return (
18
+ <header className="border-b border-gray-200">
19
+ <nav className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8" aria-label="Main navigation">
20
+ <div className="flex h-16 items-center justify-between">
21
+ <div className="flex items-center">
22
+ <Link href="/" className="text-xl font-bold no-underline hover:opacity-100">
23
+ AI DevKit
24
+ </Link>
25
+ </div>
26
+
27
+ <div className="hidden md:block">
28
+ <div className="flex items-center space-x-8">
29
+ {navigation.map((item) => (
30
+ <Link
31
+ key={item.name}
32
+ href={item.href}
33
+ className="text-sm font-medium no-underline hover:opacity-70 transition-opacity"
34
+ >
35
+ {item.name}
36
+ </Link>
37
+ ))}
38
+ <a
39
+ href="https://github.com/codeaholicguy/ai-devkit"
40
+ target="_blank"
41
+ rel="noopener noreferrer"
42
+ className="inline-flex items-center gap-2 text-sm font-medium no-underline hover:opacity-70 transition-opacity"
43
+ >
44
+ <svg
45
+ className="w-4 h-4"
46
+ fill="currentColor"
47
+ viewBox="0 0 24 24"
48
+ aria-hidden="true"
49
+ >
50
+ <path
51
+ fillRule="evenodd"
52
+ d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"
53
+ clipRule="evenodd"
54
+ />
55
+ </svg>
56
+ GitHub
57
+ <GitHubStars />
58
+ </a>
59
+ </div>
60
+ </div>
61
+
62
+ <div className="md:hidden">
63
+ <button
64
+ type="button"
65
+ onClick={() => setMobileMenuOpen(!mobileMenuOpen)}
66
+ className="inline-flex items-center justify-center p-2 rounded-md hover:bg-gray-100"
67
+ aria-expanded={mobileMenuOpen}
68
+ >
69
+ <span className="sr-only">Open main menu</span>
70
+ {mobileMenuOpen ? (
71
+ <svg className="h-6 w-6" fill="none" viewBox="0 0 24 24" strokeWidth="1.5" stroke="currentColor">
72
+ <path strokeLinecap="round" strokeLinejoin="round" d="M6 18L18 6M6 6l12 12" />
73
+ </svg>
74
+ ) : (
75
+ <svg className="h-6 w-6" fill="none" viewBox="0 0 24 24" strokeWidth="1.5" stroke="currentColor">
76
+ <path strokeLinecap="round" strokeLinejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5" />
77
+ </svg>
78
+ )}
79
+ </button>
80
+ </div>
81
+ </div>
82
+
83
+ {mobileMenuOpen && (
84
+ <div className="md:hidden py-4 space-y-1 border-t border-gray-200">
85
+ {navigation.map((item) => (
86
+ <Link
87
+ key={item.name}
88
+ href={item.href}
89
+ className="block px-3 py-2 text-base font-medium no-underline hover:bg-gray-100 rounded-md"
90
+ onClick={() => setMobileMenuOpen(false)}
91
+ >
92
+ {item.name}
93
+ </Link>
94
+ ))}
95
+ <a
96
+ href="https://github.com/codeaholicguy/ai-devkit"
97
+ target="_blank"
98
+ rel="noopener noreferrer"
99
+ className="block px-3 py-2 text-base font-medium no-underline hover:bg-gray-100 rounded-md"
100
+ >
101
+ GitHub
102
+ </a>
103
+ </div>
104
+ )}
105
+ </nav>
106
+ </header>
107
+ );
108
+ }
@@ -0,0 +1,35 @@
1
+ import { MDXRemote } from 'next-mdx-remote/rsc';
2
+ import remarkGfm from 'remark-gfm';
3
+ import rehypeHighlight from 'rehype-highlight';
4
+ import rehypeSlug from 'rehype-slug';
5
+
6
+ interface MarkdownContentProps {
7
+ content: string;
8
+ }
9
+
10
+ export default async function MarkdownContent({ content }: MarkdownContentProps) {
11
+ return (
12
+ <div className="prose prose-lg max-w-none
13
+ prose-headings:font-bold
14
+ prose-h1:text-4xl prose-h1:mb-6
15
+ prose-h2:text-3xl prose-h2:mt-12 prose-h2:mb-4
16
+ prose-h3:text-2xl prose-h3:mt-8 prose-h3:mb-3
17
+ prose-p:text-gray-700 prose-p:leading-relaxed
18
+ prose-a:text-black prose-a:underline hover:prose-a:opacity-70
19
+ prose-code:bg-gray-100 prose-code:px-1 prose-code:py-0.5 prose-code:rounded prose-code:text-sm
20
+ prose-pre:bg-gray-900 prose-pre:text-gray-100
21
+ prose-ul:my-6 prose-li:my-2
22
+ prose-strong:font-bold prose-strong:text-black">
23
+ <MDXRemote
24
+ source={content}
25
+ options={{
26
+ mdxOptions: {
27
+ remarkPlugins: [remarkGfm],
28
+ rehypePlugins: [rehypeHighlight, rehypeSlug],
29
+ },
30
+ }}
31
+ />
32
+ </div>
33
+ );
34
+ }
35
+
@@ -0,0 +1,11 @@
1
+ export default function SkipToContent() {
2
+ return (
3
+ <a
4
+ href="#main-content"
5
+ className="sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4 focus:z-50 focus:px-4 focus:py-2 focus:bg-black focus:text-white focus:rounded-lg focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-black"
6
+ >
7
+ Skip to main content
8
+ </a>
9
+ );
10
+ }
11
+
@@ -0,0 +1,42 @@
1
+ ---
2
+ title: Vision
3
+ description: The vision and purpose behind AI DevKit
4
+ slug: vision
5
+ order: 2
6
+ ---
7
+
8
+ # Vision
9
+
10
+ AI DevKit exists to bridge the gap between AI-assisted development and structured software engineering practices.
11
+
12
+ ## Our Purpose
13
+
14
+ We believe that AI coding assistants are most powerful when they work within a well-defined engineering framework where documentation is clear, plans are systematic, and architecture is intentional.
15
+
16
+ AI DevKit provides the scaffolding for that structure. It helps engineers reduce the back-and-forth of prompting, keep context in sync, and share memory between themselves and their AI tools.
17
+
18
+ Our goal is simple:
19
+ To make working with AI feel as natural and reliable as working with your favorite teammate, the one who already knows your project, your style, and your standards.
20
+
21
+ ## What We're Building
22
+
23
+ A toolkit that enables developers to:
24
+
25
+ - **Document thoroughly** - Capture requirements, design decisions, and implementation notes in a consistent format
26
+ - **Plan systematically** - Break down complex features into manageable tasks with clear dependencies
27
+ - **Collaborate effectively** - Share context with AI assistants and human teammates through well-organized documentation
28
+ - **Maintain quality** - Ensure testing coverage and code review processes are baked into the workflow
29
+
30
+ ## Our Principles
31
+
32
+ 1. **Documentation-first development** - Start with clear requirements before writing code
33
+ 2. **Phase-based workflow** - Move through requirements, design, planning, implementation, and testing in a structured way
34
+ 3. **AI-friendly context** - Organize project knowledge so AI assistants can provide better assistance
35
+ 4. **Low friction** - Make it easy to follow best practices without heavy tooling overhead
36
+
37
+ ## Looking Forward
38
+
39
+ We envision a future where structured development practices are the default, not the exception. Where every feature starts with clear requirements and ends with comprehensive tests. Where AI assistants amplify human capabilities by working within well-defined frameworks.
40
+
41
+ AI DevKit is our contribution to that future.
42
+
@@ -0,0 +1,9 @@
1
+ ---
2
+ title: Public Website & Documentation
3
+ status: completed
4
+ priority: high
5
+ order: 1
6
+ ---
7
+
8
+ Launch a static website with landing page, comprehensive documentation, project vision, and development roadmap.
9
+
@@ -0,0 +1,7 @@
1
+ ---
2
+ title: Coding Agent Integration
3
+ status: in-progress
4
+ order: 2
5
+ ---
6
+
7
+ Expand AI DevKit’s ecosystem with other AI coding agents such as: ChatGPT Codex, Gemini CLI, etc. The goal is to make AI DevKit the universal bridge between your favorite AI assistants and your development workflow, enabling smoother collaboration, faster iteration, and more consistent results.
@@ -0,0 +1,8 @@
1
+ ---
2
+ title: CLI Enhancements & Workflows
3
+ status: planned
4
+ order: 2
5
+ ---
6
+
7
+ Expand CLI capabilities with interactive workflows, better error handling, and enhanced command chaining. Focus on improving developer experience and reducing friction in the structured development process.
8
+
@@ -0,0 +1,8 @@
1
+ ---
2
+ title: Local Memory & Knowledge based
3
+ status: planned
4
+ order: 4
5
+ ---
6
+
7
+ Build a local AI memory that learns from your coding habits, preferences, and team knowledge.
8
+ This feature allows AI agents to access your skills, patterns, and project context directly from local, minimizing redundant prompts, speeding up workflows, and keeping your documents lightweight and focused.