Rename .pi to .feynman, rename citation agent to verifier, add website, skills, and docs
- Rename project config dir from .pi/ to .feynman/ (Pi supports this via piConfig.configDir) - Rename citation agent to verifier across all prompts, agents, skills, and docs - Add website with homepage and 24 doc pages (Astro + Tailwind) - Add skills for all workflows (deep-research, lit, review, audit, replicate, compare, draft, autoresearch, watch, jobs, session-log, agentcomputer) - Add Pi-native prompt frontmatter (args, section, topLevelCli) and read at runtime - Remove sync-docs generation layer — docs are standalone - Remove metadata/prompts.mjs and metadata/packages.mjs — not needed at runtime - Rewrite README and homepage copy - Add environment selection to /replicate before executing - Add prompts/delegate.md and AGENTS.md Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
9
website/src/components/Footer.astro
Normal file
9
website/src/components/Footer.astro
Normal file
@@ -0,0 +1,9 @@
|
||||
<footer class="py-8 mt-16">
|
||||
<div class="max-w-6xl mx-auto px-6 flex flex-col sm:flex-row items-center justify-between gap-4">
|
||||
<span class="text-sm text-text-dim">© 2026 Companion Inc.</span>
|
||||
<div class="flex gap-6">
|
||||
<a href="https://github.com/getcompanion-ai/feynman" target="_blank" rel="noopener" class="text-sm text-text-dim hover:text-text-primary transition-colors">GitHub</a>
|
||||
<a href="/docs/getting-started/installation" class="text-sm text-text-dim hover:text-text-primary transition-colors">Docs</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
26
website/src/components/Nav.astro
Normal file
26
website/src/components/Nav.astro
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
import ThemeToggle from './ThemeToggle.astro';
|
||||
|
||||
interface Props {
|
||||
active?: 'home' | 'docs';
|
||||
}
|
||||
|
||||
const { active = 'home' } = Astro.props;
|
||||
---
|
||||
|
||||
<nav class="sticky top-0 z-50 bg-bg">
|
||||
<div class="max-w-6xl mx-auto px-6 h-14 flex items-center justify-between">
|
||||
<a href="/" class="text-xl font-bold text-accent tracking-tight">Feynman</a>
|
||||
<div class="flex items-center gap-6">
|
||||
<a href="/docs/getting-started/installation"
|
||||
class:list={["text-sm transition-colors", active === 'docs' ? 'text-text-primary' : 'text-text-muted hover:text-text-primary']}>
|
||||
Docs
|
||||
</a>
|
||||
<a href="https://github.com/getcompanion-ai/feynman" target="_blank" rel="noopener"
|
||||
class="text-sm text-text-muted hover:text-text-primary transition-colors">
|
||||
GitHub
|
||||
</a>
|
||||
<ThemeToggle />
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
80
website/src/components/Sidebar.astro
Normal file
80
website/src/components/Sidebar.astro
Normal file
@@ -0,0 +1,80 @@
|
||||
---
|
||||
interface Props {
|
||||
currentSlug: string;
|
||||
}
|
||||
|
||||
const { currentSlug } = Astro.props;
|
||||
|
||||
const sections = [
|
||||
{
|
||||
title: 'Getting Started',
|
||||
items: [
|
||||
{ label: 'Installation', slug: 'getting-started/installation' },
|
||||
{ label: 'Quick Start', slug: 'getting-started/quickstart' },
|
||||
{ label: 'Setup', slug: 'getting-started/setup' },
|
||||
{ label: 'Configuration', slug: 'getting-started/configuration' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Workflows',
|
||||
items: [
|
||||
{ label: 'Deep Research', slug: 'workflows/deep-research' },
|
||||
{ label: 'Literature Review', slug: 'workflows/literature-review' },
|
||||
{ label: 'Peer Review', slug: 'workflows/review' },
|
||||
{ label: 'Code Audit', slug: 'workflows/audit' },
|
||||
{ label: 'Replication', slug: 'workflows/replication' },
|
||||
{ label: 'Source Comparison', slug: 'workflows/compare' },
|
||||
{ label: 'Draft Writing', slug: 'workflows/draft' },
|
||||
{ label: 'Autoresearch', slug: 'workflows/autoresearch' },
|
||||
{ label: 'Watch', slug: 'workflows/watch' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Agents',
|
||||
items: [
|
||||
{ label: 'Researcher', slug: 'agents/researcher' },
|
||||
{ label: 'Reviewer', slug: 'agents/reviewer' },
|
||||
{ label: 'Writer', slug: 'agents/writer' },
|
||||
{ label: 'Verifier', slug: 'agents/verifier' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Tools',
|
||||
items: [
|
||||
{ label: 'AlphaXiv', slug: 'tools/alphaxiv' },
|
||||
{ label: 'Web Search', slug: 'tools/web-search' },
|
||||
{ label: 'Session Search', slug: 'tools/session-search' },
|
||||
{ label: 'Preview', slug: 'tools/preview' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Reference',
|
||||
items: [
|
||||
{ label: 'CLI Commands', slug: 'reference/cli-commands' },
|
||||
{ label: 'Slash Commands', slug: 'reference/slash-commands' },
|
||||
{ label: 'Package Stack', slug: 'reference/package-stack' },
|
||||
],
|
||||
},
|
||||
];
|
||||
---
|
||||
|
||||
<aside id="sidebar" class="w-64 shrink-0 h-[calc(100vh-3.5rem)] sticky top-14 overflow-y-auto py-6 pr-4 hidden lg:block border-r border-border">
|
||||
{sections.map((section) => (
|
||||
<div class="mb-6">
|
||||
<div class="text-xs font-semibold text-accent uppercase tracking-wider px-3 mb-2">{section.title}</div>
|
||||
{section.items.map((item) => (
|
||||
<a
|
||||
href={`/docs/${item.slug}`}
|
||||
class:list={[
|
||||
'block px-3 py-1.5 text-sm border-l-[2px] transition-colors',
|
||||
currentSlug === item.slug
|
||||
? 'border-accent text-text-primary'
|
||||
: 'border-transparent text-text-muted hover:text-text-primary',
|
||||
]}
|
||||
>
|
||||
{item.label}
|
||||
</a>
|
||||
))}
|
||||
</div>
|
||||
))}
|
||||
</aside>
|
||||
33
website/src/components/ThemeToggle.astro
Normal file
33
website/src/components/ThemeToggle.astro
Normal file
@@ -0,0 +1,33 @@
|
||||
<button id="theme-toggle" class="p-1.5 rounded-md text-text-muted hover:text-text-primary hover:bg-surface transition-colors" aria-label="Toggle theme">
|
||||
<svg id="sun-icon" class="hidden w-[18px] h-[18px]" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
||||
<circle cx="12" cy="12" r="5" />
|
||||
<path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42" />
|
||||
</svg>
|
||||
<svg id="moon-icon" class="hidden w-[18px] h-[18px]" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
||||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" />
|
||||
</svg>
|
||||
</button>
|
||||
|
||||
<script is:inline>
|
||||
(function() {
|
||||
var stored = localStorage.getItem('theme');
|
||||
var prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
var dark = stored === 'dark' || (!stored && prefersDark);
|
||||
if (dark) document.documentElement.classList.add('dark');
|
||||
function update() {
|
||||
var isDark = document.documentElement.classList.contains('dark');
|
||||
document.getElementById('sun-icon').style.display = isDark ? 'block' : 'none';
|
||||
document.getElementById('moon-icon').style.display = isDark ? 'none' : 'block';
|
||||
}
|
||||
update();
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
update();
|
||||
document.getElementById('theme-toggle').addEventListener('click', function() {
|
||||
document.documentElement.classList.toggle('dark');
|
||||
var isDark = document.documentElement.classList.contains('dark');
|
||||
localStorage.setItem('theme', isDark ? 'dark' : 'light');
|
||||
update();
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
Reference in New Issue
Block a user