Curaye Import

VerifiedCaution

Import an existing project with no .curaye history by mining session context and ingesting existing spec files.

Sby Skills Guide Bot
DevelopmentIntermediate
7/23/2026
Claude Code
#project-import#spec-ingestion#codebase-analysis#curaye#project-documentation

Recommended for

Automated summary

Imports an existing project with no `.curaye/` history into Curaye by mining session context, ingesting specification files, and running deterministic code inference through the CLI.

Strengths

  • Combines conversation context mining, existing planning-document ingestion, and deterministic code inference.
  • Includes pre-flight checks and stops clearly when a `.curaye/` folder already exists.
  • Offers a fallback to `/curaye-bootstrap` when product documentation is absent or too thin.
  • Accepts an optional project path, otherwise defaults to the current working directory.

Limitations

  • Requires the `curaye` CLI and is designed specifically for Claude Code.
  • Cannot import projects that already contain `.curaye/`, even if that history is incomplete.
  • The provided SKILL.md is truncated mid-Step 3, so later workflow steps are not documented here.
When to use it

Use it to bring an existing codebase into Curaye when the project has never been tracked and may already contain specs or planning files.

When not to use it

Do not use it when `.curaye/` already exists, when there is no product documentation at all, or when the `curaye` CLI is unavailable.

Security analysis

Caution
Quality score80/100

The skill is a well-structured orchestration prompt that drives an external CLI and writes documentation files into the user's project. Nothing destructive or exfiltrating is present, but it implicitly needs Bash and a third-party binary (`curaye`) plus writes to the project tree, so it warrants 'caution' rather than 'safe'.

Findings
  • •Skill requires shell execution of an external, unverified `curaye` CLI (`curaye import`, `curaye link`) but declares no `allowed-tools`, so the agent may invoke Bash without an explicit capability declaration.
  • •Writes and rewrites files inside the target project (creating `.curaye/` documents, converting user spec files), including overwriting a CLI-generated `prd.md` seed — mutation of user files, though scoped and reversible.
  • •Reads broadly across the project (README, manifests, docs/specs/notes directories, entry-point source files) and also instructs mining of prior conversation context; content could include sensitive planning material, which is then written into new files.
  • •Depends on sibling skills (`/curaye-bootstrap`, `/curaye-brief`, `/curaye-build`) that are not included in this catalog, so behavior outside this file is unverified.
  • •No destructive commands, no network calls, no secret/credential transmission, no obfuscated payloads, and no attempts to override the agent's role or safety rules were found.
  • •Instructs the agent to execute local `curaye` CLI commands (`curaye import`, `curaye link`) that write to `.curaye/` and modify project metadata; safety depends on trusting the installed CLI.
  • •Reads a broad set of project files and active-session context, which could cause sensitive material to be copied into generated planning documents if present in the workspace.
  • •Accepts an arbitrary project path through `$ARGUMENTS`; the user must ensure the target path is intended and not a sensitive or unrelated directory.
  • •No destructive commands, credential exfiltration, network transfer, obfuscated payloads, or attempts to disable safety controls were found.
How this analysis is made

Examples

Import a legacy project by path
Run /curaye-import for /Users/alex/code/legacy-billing. The project has no .curaye/ history; use the docs/specs files and what we discussed in this session, then infer the code layer.
Import current directory with existing specs
Use /curaye-import on the current project. I have a spec-feature-auth.md and plan.md in docs/, and no .curaye/ folder yet. Convert those into planned/ docs before running inference.
Fallback when product context is thin
We have a small internal tool with code but almost no README or specs. Run /curaye-import; if there isn't enough product context, tell me whether to run /curaye-bootstrap first.

name: curaye-import description: Import an existing project with no .curaye/ history into the Curaye system. Use when a project has code and possibly existing spec or planning files but has never been tracked under Curaye. Mines the active session context and ingests any existing markdown spec files before running deterministic CLI inference. If no product documentation is found, offers to hand off to /curaye-bootstrap instead. Optionally pass the project path as an argument. compatibility: Designed for Claude Code. Requires the curaye CLI installed. metadata: version: "0.2"

Import an existing project that has no .curaye/ history into the Curaye system. Mines session context, ingests existing spec files, runs deterministic code inference via the CLI, then uses LLM comprehension to write meaningful current/ documents and surface decision candidates.

Project path (optional): $ARGUMENTS

If a path is provided, use it. Otherwise use the current working directory.

Step 1 — Pre-flight checks

Confirm .curaye/ does not exist at the target path. If it does, stop: "This project already has a .curaye/ folder. If it's incomplete, edit the documents directly or run /curaye-brief to review what's there."

Do a quick read to orient yourself:

  • README.md (if exists)
  • package.json / Cargo.toml / pyproject.toml (if exists)
  • Top-level directory structure (one level deep)

Report what you found: "I can see this is a [type] project built with [stack]. Found [N] top-level source directories."

Step 2 — Mine the session context and ingest existing spec files

Session mining: Before reading any files, extract everything already established in this conversation about this project — the same extraction as /curaye-bootstrap Step 2:

  • Project identity, target user, app type, stack
  • Features already designed or discussed
  • Decisions made or tradeoffs weighed
  • Scope exclusions and non-goals

Spec file ingestion: Scan the project for human-written planning documents — look in the project root and in docs/, specs/, notes/, planning/, .plan/ folders. Files to collect:

  • Any .md file that looks like a spec, feature description, or planning doc (not README, not CHANGELOG, not license)
  • Any file with a name suggesting planning intent: spec-*.md, feature-*.md, *.spec.md, plan.md, roadmap.md, brainstorm files

For each spec-like file found, read it and extract:

  • What feature or capability it describes
  • Any acceptance criteria, goals, or non-goals stated
  • Status signals (draft, wip, done, etc.)

Assessment: After mining session and files, report:

From the session and existing files I found:

  Project:  <name or "not established">
  Stack:    <stack or "will infer from code">

  Existing spec files found: <N>
    - <filename> → "<what it describes>"
    - ...

  From our conversation:
    - <features or decisions discussed>
    - ...

  Product documentation: <"found" / "thin" / "none">

Bootstrap offer: If product documentation is effectively absent — no README or a stub README under ~10 lines, no spec files, and nothing about the project's purpose in the session — stop and ask:

I can't find enough product context to write meaningful prd.md or planned/ docs.
Curaye import works best when there's something to go from.

Options:
  1. Run /curaye-bootstrap first — answer a few questions, define what this project
     is and what you want to build, then come back to import the code layer.
  2. Tell me now — what is this project and what should it do? (I'll proceed with
     your answer as the product context.)

Which would you prefer?

If they choose option 1, stop. If they give context inline, record it and continue.

Step 3 — Convert existing spec files to planned/ docs

For each spec-like file identified in Step 2:

  1. Read it in full.
  2. Map it to a Curaye planned/ document: write proper frontmatter (id, title, status, effort, created, updated) and normalise the body to the standard structure (Problem, Goal, Non-goals, Acceptance criteria).
  3. Infer status from any signals in the file:
    • Mentions of "done", "shipped", "v1 complete" → consider status: done (note for user review)
    • Mentions of "wip", "in progress" → status: building
    • Everything else → status: draft
  4. Mark each with confidence: inferred if the mapping required interpretation; omit if the file was already well-structured.
  5. Write to .curaye/planned/<numeric-prefix>-<id>.md.

If session context described additional features not covered by any file, draft planned/ specs for those too — these come from the conversation, so no confidence: inferred needed.

Present the converted specs to the user before writing:

I'll create these planned/ docs from your existing files and session context:

  01-<id>  <title>  [from: spec-auth.md]         status: draft
  02-<id>  <title>  [from: session]               status: draft
  03-<id>  <title>  [from: roadmap.md, status: done — review before shipping]

Write these? [y/n/edit]

Wait for confirmation.

Step 4 — Deterministic inference via CLI

Run the CLI import in deterministic-only mode:

curaye import <path> --deterministic-only

This produces:

  • stack.md from package manifests (high confidence)
  • prd.md seed from README (medium confidence — will be overwritten with session context if richer)
  • current/ domain stubs from directory structure (medium confidence)
  • shipped/ skeleton from git tags (medium confidence)

All generated files are marked confidence: inferred. Do not modify them yet — read them first.

If the CLI produced a prd.md seed but session context has a richer product description, replace the CLI seed with the session-derived version.

Step 5 — Enhance current/ with LLM comprehension

The CLI stubs current/ from directory names — it knows files exist, not what they do.

For each current/ document with confidence: inferred:

  1. Identify the source directory or files this domain corresponds to.
  2. Read the most relevant source files (entry points, key modules, main components — not every file).
  3. Rewrite the document to describe what the feature does, not what files exist. Present tense. Observable behaviour.
  4. Keep confidence: inferred.

Example:

BEFORE: Source files found in src/reader/

AFTER:  The reader renders EPUB files via foliate-js inside a sandboxed iframe.
        Supports paginated and scrolled flow modes, configurable per-book.
        Highlights and notes are created via text selection and stored in SQLite.

Step 6 — Surface decision candidates

Read at the boundary level — package.json, imports in entry files, config files. Look for choices that imply decisions:

  • An unusual library choice where popular alternatives exist
  • A custom implementation where a library would be expected
  • A recurring pattern suggesting a deliberate convention

Cross-reference with any decisions already established from the session (Step 2) — do not duplicate them.

Draft decisions/<id>.md for each candidate (limit 3–5):

---
id: <kebab-id>
title: <What was decided>
status: active
date: <today>
confidence: inferred
---

## Context
<Why this decision was likely needed>

## Decision
<What was chosen>

## Consequences
<What this makes easier or harder>

Step 7 — Targeted interview (gaps only)

Ask only about what the session, spec files, and code inference did not establish. Skip any question whose answer is already known.

Possible gap questions — ask only the ones that apply:

  • "I inferred this north star from the README: [text]. Is that right, or would you describe it differently?" (Revise prd.md.)
  • "Are there features in the codebase you consider abandoned, deprecated, or temporary?" (Mark those current/ domains.)
  • "Any tech choices you'd make differently if starting today?" (Add as decisions/ with status: deprecated.)
  • "Any decisions baked into the code that weren't obvious from reading it?" (Add as confirmed decisions — no confidence: inferred.)

If session context already answered all of these, skip the interview entirely and say: "No gaps — I have everything I need."

Step 8 — Register the project

curaye link <path>

Step 9 — Report

Import complete.

  planned/:   <N> docs (<M> from existing files, <K> from session)
  current/:   <N> docs (all confidence: inferred — review recommended)
  decisions/: <N> docs (<M> inferred, <K> confirmed from session)
  shipped/:   <N> skeleton entries from git tags

  Review inferred documents with `curaye review <path>` or open them in the desktop app.

"Run /curaye-brief for a full re-entry brief, or /curaye-build to start on the first planned spec."

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/curaye-import-mrx3y0e5/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/curaye-import-mrx3y0e5' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/curaye-import-mrx3y0e5/download' --output '.skill-downloads/curaye-import-mrx3y0e5/SKILL.md.part' && mv '.skill-downloads/curaye-import-mrx3y0e5/SKILL.md.part' '.skill-downloads/curaye-import-mrx3y0e5/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

Environment declared by the author: Designed for Claude Code. Requires the curaye CLI installed.

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/curaye-import-mrx3y0e5/SKILL.md' && test -s '.skill-downloads/curaye-import-mrx3y0e5/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/curaye-import' && cp -R '.skill-downloads/curaye-import-mrx3y0e5' '.claude/skills/curaye-import'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/curaye-import-mrx3y0e5'

openskills read 'curaye-import-mrx3y0e5'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/curaye-import-mrx3y0e5/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills