ai-devkit 0.4.2 → 0.6.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.
- package/dist/cli.js +8 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/memory.d.ts +3 -0
- package/dist/commands/memory.d.ts.map +1 -0
- package/dist/commands/memory.js +53 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/commands/setup.d.ts +6 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +112 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/lib/EnvironmentSelector.d.ts +1 -0
- package/dist/lib/EnvironmentSelector.d.ts.map +1 -1
- package/dist/lib/EnvironmentSelector.js +28 -0
- package/dist/lib/EnvironmentSelector.js.map +1 -1
- package/dist/lib/TemplateManager.d.ts +14 -0
- package/dist/lib/TemplateManager.d.ts.map +1 -1
- package/dist/lib/TemplateManager.js +74 -3
- package/dist/lib/TemplateManager.js.map +1 -1
- package/{templates/commands/capture-knowledge.toml → dist/templates/commands/capture-knowledge.md} +10 -4
- package/{templates/commands/check-implementation.toml → dist/templates/commands/check-implementation.md} +9 -0
- package/{templates/commands/code-review.toml → dist/templates/commands/code-review.md} +11 -4
- package/{templates/commands/debug.toml → dist/templates/commands/debug.md} +11 -5
- package/{templates/commands/execute-plan.toml → dist/templates/commands/execute-plan.md} +11 -5
- package/{templates/commands/new-requirement.toml → dist/templates/commands/new-requirement.md} +11 -4
- package/dist/templates/commands/remember.md +27 -0
- package/dist/templates/commands/review-design.md +21 -0
- package/dist/templates/commands/review-requirements.md +19 -0
- package/dist/templates/commands/simplify-implementation.md +153 -0
- package/{templates/commands/update-planning.toml → dist/templates/commands/update-planning.md} +11 -4
- package/{templates/commands/writing-test.toml → dist/templates/commands/writing-test.md} +10 -3
- package/dist/templates/env/base.md +51 -0
- package/dist/templates/phases/deployment.md +72 -0
- package/dist/templates/phases/design.md +60 -0
- package/dist/templates/phases/implementation.md +65 -0
- package/dist/templates/phases/monitoring.md +80 -0
- package/dist/templates/phases/planning.md +60 -0
- package/dist/templates/phases/requirements.md +51 -0
- package/dist/templates/phases/testing.md +81 -0
- package/dist/templates/templates/commands/capture-knowledge.md +55 -0
- package/dist/templates/templates/commands/check-implementation.md +30 -0
- package/dist/templates/templates/commands/code-review.md +90 -0
- package/dist/templates/templates/commands/debug.md +54 -0
- package/dist/templates/templates/commands/execute-plan.md +80 -0
- package/dist/templates/templates/commands/new-requirement.md +136 -0
- package/dist/templates/templates/commands/remember.md +27 -0
- package/dist/templates/templates/commands/review-design.md +21 -0
- package/dist/templates/templates/commands/review-requirements.md +19 -0
- package/dist/templates/templates/commands/simplify-implementation.md +153 -0
- package/dist/templates/templates/commands/update-planning.md +70 -0
- package/dist/templates/templates/commands/writing-test.md +53 -0
- package/dist/templates/templates/env/base.md +51 -0
- package/dist/templates/templates/phases/deployment.md +72 -0
- package/dist/templates/templates/phases/design.md +60 -0
- package/dist/templates/templates/phases/implementation.md +65 -0
- package/dist/templates/templates/phases/monitoring.md +80 -0
- package/dist/templates/templates/phases/planning.md +60 -0
- package/dist/templates/templates/phases/requirements.md +51 -0
- package/dist/templates/templates/phases/testing.md +81 -0
- package/dist/types.d.ts +2 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/util/env.d.ts +2 -0
- package/dist/util/env.d.ts.map +1 -1
- package/dist/util/env.js +18 -1
- package/dist/util/env.js.map +1 -1
- package/package.json +5 -2
- package/project.json +29 -0
- package/templates/commands/capture-knowledge.md +9 -0
- package/templates/commands/check-implementation.md +9 -0
- package/templates/commands/code-review.md +9 -0
- package/templates/commands/debug.md +9 -0
- package/templates/commands/execute-plan.md +9 -0
- package/templates/commands/new-requirement.md +9 -0
- package/templates/commands/remember.md +27 -0
- package/templates/commands/review-design.md +10 -0
- package/templates/commands/review-requirements.md +10 -0
- package/templates/commands/simplify-implementation.md +153 -0
- package/templates/commands/update-planning.md +9 -0
- package/templates/commands/writing-test.md +9 -0
- package/CHANGELOG.md +0 -87
- package/README.md +0 -297
- package/dist/__tests__/lib/Config.test.d.ts +0 -2
- package/dist/__tests__/lib/Config.test.d.ts.map +0 -1
- package/dist/__tests__/lib/Config.test.js +0 -281
- package/dist/__tests__/lib/Config.test.js.map +0 -1
- package/dist/__tests__/lib/EnvironmentSelector.test.d.ts +0 -2
- package/dist/__tests__/lib/EnvironmentSelector.test.d.ts.map +0 -1
- package/dist/__tests__/lib/EnvironmentSelector.test.js +0 -117
- package/dist/__tests__/lib/EnvironmentSelector.test.js.map +0 -1
- package/dist/__tests__/lib/PhaseSelector.test.d.ts +0 -2
- package/dist/__tests__/lib/PhaseSelector.test.d.ts.map +0 -1
- package/dist/__tests__/lib/PhaseSelector.test.js +0 -77
- package/dist/__tests__/lib/PhaseSelector.test.js.map +0 -1
- package/dist/__tests__/lib/TemplateManager.test.d.ts +0 -2
- package/dist/__tests__/lib/TemplateManager.test.d.ts.map +0 -1
- package/dist/__tests__/lib/TemplateManager.test.js +0 -351
- package/dist/__tests__/lib/TemplateManager.test.js.map +0 -1
- package/dist/__tests__/util/env.test.d.ts +0 -2
- package/dist/__tests__/util/env.test.d.ts.map +0 -1
- package/dist/__tests__/util/env.test.js +0 -166
- package/dist/__tests__/util/env.test.js.map +0 -1
- package/templates/commands/review-design.toml +0 -13
- package/templates/commands/review-requirements.toml +0 -11
- package/web/.nojekyll +0 -2
- package/web/CNAME +0 -1
- package/web/README.md +0 -100
- package/web/app/favicon.ico +0 -0
- package/web/app/globals.css +0 -122
- package/web/app/layout.tsx +0 -106
- package/web/app/page.tsx +0 -119
- package/web/app/roadmap/page.tsx +0 -150
- package/web/app/robots.ts +0 -16
- package/web/app/sitemap.ts +0 -46
- package/web/app/vision/page.tsx +0 -49
- package/web/components/Footer.tsx +0 -81
- package/web/components/GitHubButton.tsx +0 -49
- package/web/components/GitHubStars.tsx +0 -27
- package/web/components/Header.tsx +0 -108
- package/web/components/MarkdownContent.tsx +0 -35
- package/web/components/SkipToContent.tsx +0 -11
- package/web/content/pages/vision.md +0 -44
- package/web/content/roadmap/1-web.md +0 -9
- package/web/content/roadmap/2-integrations.md +0 -7
- package/web/content/roadmap/3-cli-enhancements.md +0 -8
- package/web/content/roadmap/4-local-memory.md +0 -8
- package/web/eslint.config.mjs +0 -18
- package/web/lib/GitHubContext.tsx +0 -57
- package/web/lib/content/loader.ts +0 -152
- package/web/lib/content/types.ts +0 -37
- package/web/lib/utils.ts +0 -12
- package/web/next.config.ts +0 -11
- package/web/package-lock.json +0 -8837
- package/web/package.json +0 -34
- package/web/postcss.config.mjs +0 -7
- package/web/public/file.svg +0 -1
- package/web/public/globe.svg +0 -1
- package/web/public/next.svg +0 -1
- package/web/public/vercel.svg +0 -1
- package/web/public/window.svg +0 -1
package/web/app/page.tsx
DELETED
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import Link from "next/link";
|
|
2
|
-
import GitHubButton from "@/components/GitHubButton";
|
|
3
|
-
|
|
4
|
-
export default function Home() {
|
|
5
|
-
return (
|
|
6
|
-
<div className="bg-white">
|
|
7
|
-
<section className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 py-20 md:py-32">
|
|
8
|
-
<div className="text-center">
|
|
9
|
-
<h1 className="text-4xl md:text-6xl font-bold mb-6">
|
|
10
|
-
Structured AI-Assisted
|
|
11
|
-
<br />
|
|
12
|
-
Development
|
|
13
|
-
</h1>
|
|
14
|
-
<p className="text-xl md:text-2xl text-gray-600 mb-8 max-w-3xl mx-auto">
|
|
15
|
-
A CLI toolkit that brings structure to AI-assisted software development with phase templates,
|
|
16
|
-
systematic planning, and comprehensive documentation workflows.
|
|
17
|
-
</p>
|
|
18
|
-
<div className="flex flex-col sm:flex-row gap-4 justify-center items-center">
|
|
19
|
-
<Link
|
|
20
|
-
href="/docs"
|
|
21
|
-
className="px-8 py-3 bg-black text-white rounded-lg font-medium hover:bg-gray-800 transition-colors no-underline"
|
|
22
|
-
>
|
|
23
|
-
Get Started
|
|
24
|
-
</Link>
|
|
25
|
-
<GitHubButton repo="codeaholicguy/ai-devkit" />
|
|
26
|
-
</div>
|
|
27
|
-
</div>
|
|
28
|
-
</section>
|
|
29
|
-
|
|
30
|
-
<section className="bg-gray-50 py-20">
|
|
31
|
-
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
|
|
32
|
-
<h2 className="text-3xl md:text-4xl font-bold text-center mb-12">
|
|
33
|
-
Why AI DevKit?
|
|
34
|
-
</h2>
|
|
35
|
-
<div className="grid md:grid-cols-3 gap-8">
|
|
36
|
-
<div className="bg-white p-8 rounded-lg border border-gray-200">
|
|
37
|
-
<h3 className="text-xl font-bold mb-3">Documentation-First</h3>
|
|
38
|
-
<p className="text-gray-600 leading-relaxed">
|
|
39
|
-
Start with clear requirements, design decisions, and implementation plans.
|
|
40
|
-
Keep your project knowledge organized and accessible.
|
|
41
|
-
</p>
|
|
42
|
-
</div>
|
|
43
|
-
<div className="bg-white p-8 rounded-lg border border-gray-200">
|
|
44
|
-
<h3 className="text-xl font-bold mb-3">Phase-Based Workflow</h3>
|
|
45
|
-
<p className="text-gray-600 leading-relaxed">
|
|
46
|
-
Move systematically through requirements, design, planning, implementation,
|
|
47
|
-
and testing. No step gets skipped.
|
|
48
|
-
</p>
|
|
49
|
-
</div>
|
|
50
|
-
<div className="bg-white p-8 rounded-lg border border-gray-200">
|
|
51
|
-
<h3 className="text-xl font-bold mb-3">AI-Friendly Context</h3>
|
|
52
|
-
<p className="text-gray-600 leading-relaxed">
|
|
53
|
-
Organize project knowledge so AI assistants provide better guidance.
|
|
54
|
-
Amplify human capabilities with structured context.
|
|
55
|
-
</p>
|
|
56
|
-
</div>
|
|
57
|
-
</div>
|
|
58
|
-
</div>
|
|
59
|
-
</section>
|
|
60
|
-
|
|
61
|
-
<section className="py-20">
|
|
62
|
-
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
|
|
63
|
-
<div className="max-w-3xl mx-auto">
|
|
64
|
-
<h2 className="text-3xl md:text-4xl font-bold mb-8 text-center">
|
|
65
|
-
Quick Start
|
|
66
|
-
</h2>
|
|
67
|
-
<div className="bg-gray-50 p-8 rounded-lg border border-gray-200">
|
|
68
|
-
<p className="text-gray-600 mb-4">Install AI DevKit globally:</p>
|
|
69
|
-
<pre className="bg-black text-white p-4 rounded overflow-x-auto">
|
|
70
|
-
<code>npm install -g ai-devkit</code>
|
|
71
|
-
</pre>
|
|
72
|
-
<p className="text-gray-600 mt-6 mb-4">Initialize in your project:</p>
|
|
73
|
-
<pre className="bg-black text-white p-4 rounded overflow-x-auto">
|
|
74
|
-
<code>ai-devkit init</code>
|
|
75
|
-
</pre>
|
|
76
|
-
<p className="text-gray-600 mt-6">or</p>
|
|
77
|
-
<pre className="bg-black text-white p-4 rounded overflow-x-auto">
|
|
78
|
-
<code>npx ai-devkit init</code>
|
|
79
|
-
</pre>
|
|
80
|
-
<p className="text-gray-600 mt-6">
|
|
81
|
-
This creates a <code>docs/ai/</code> directory with phase templates for
|
|
82
|
-
requirements, design, planning, implementation, testing, deployment, and monitoring.
|
|
83
|
-
</p>
|
|
84
|
-
<p className="text-gray-600 mt-6">
|
|
85
|
-
In Cursor or Claude Code, type <code>/new-requirement</code> to get started.
|
|
86
|
-
</p>
|
|
87
|
-
<iframe src="https://www.youtube.com/embed/8cNFkHEVE3o?autoplay=1&mute=1&loop=1&controls=0" className="w-full h-[440px]" />
|
|
88
|
-
</div>
|
|
89
|
-
<div className="text-center mt-8">
|
|
90
|
-
<Link
|
|
91
|
-
href="/docs"
|
|
92
|
-
className="text-lg font-medium hover:opacity-70 transition-opacity"
|
|
93
|
-
>
|
|
94
|
-
Read the full documentation →
|
|
95
|
-
</Link>
|
|
96
|
-
</div>
|
|
97
|
-
</div>
|
|
98
|
-
</div>
|
|
99
|
-
</section>
|
|
100
|
-
|
|
101
|
-
<section className="bg-black text-white py-20">
|
|
102
|
-
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 text-center">
|
|
103
|
-
<h2 className="text-3xl md:text-4xl font-bold mb-6">
|
|
104
|
-
Ready to structure your development?
|
|
105
|
-
</h2>
|
|
106
|
-
<p className="text-xl text-gray-300 mb-8 max-w-2xl mx-auto">
|
|
107
|
-
Join developers who are building better software with AI assistance and structured workflows.
|
|
108
|
-
</p>
|
|
109
|
-
<Link
|
|
110
|
-
href="/docs"
|
|
111
|
-
className="inline-block px-8 py-3 bg-white text-black rounded-lg font-medium hover:bg-gray-100 transition-colors no-underline"
|
|
112
|
-
>
|
|
113
|
-
Get Started Now
|
|
114
|
-
</Link>
|
|
115
|
-
</div>
|
|
116
|
-
</section>
|
|
117
|
-
</div>
|
|
118
|
-
);
|
|
119
|
-
}
|
package/web/app/roadmap/page.tsx
DELETED
|
@@ -1,150 +0,0 @@
|
|
|
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
|
-
}
|
package/web/app/robots.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
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
|
-
|
package/web/app/sitemap.ts
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
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
|
-
|
package/web/app/vision/page.tsx
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,81 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
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
|
-
|
|
@@ -1,108 +0,0 @@
|
|
|
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
|
-
}
|