Skip to content
Back to skills

586 Development 345145ee

ASecurity

This document is for contributors and maintainers. It summarizes the package architecture, design decisions, and development workflow for Scientific Writer v2.7.0.

  • 9 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added October 11, 2026
documentationpythonbashtestingapidocumentation

Works with

  • claude code
  • cli
  • api

Security analysis

A100/100

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 586-development_345145ee --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 586 Development 345145ee?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 586 Development 345145ee
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-586-development-345145ee/badge)](https://www.skillsdirectory.com/skills/tools-only-586-development-345145ee)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
# Development and Architecture

This document is for contributors and maintainers. It summarizes the package architecture, design decisions, and development workflow for Scientific Writer v2.7.0.

## Architecture Overview

### Package Structure

```
scientific_writer/
├── __init__.py          # Public API exports, version
├── api.py               # Async generate_paper() function
├── cli.py               # CLI entrypoint (cli_main)
├── core.py              # Core utilities (API keys, instructions, data processing)
├── models.py            # Data models (ProgressUpdate, PaperResult, etc.)
└── utils.py             # Helper functions (paper detection, file scanning)
```

### Plugin Structure

```
claude-scientific-writer/
├── .claude-plugin/          # Plugin metadata
│   └── plugin.json
├── commands/                # Plugin commands
│   └── scientific-writer-init.md
├── skills/                  # All 19+ skills
│   ├── citation-management/
│   ├── clinical-reports/
│   ├── research-lookup/
│   └── ... (16+ more)
├── templates/               # CLAUDE.md template
│   └── CLAUDE.scientific-writer.md
└── scientific_writer/       # Python package
```

### Key Components

- `api.generate_paper`: Async generator streaming progress and yielding a comprehensive result
- `cli.cli_main`: CLI interface; 100% backward-compatible behavior
- `core`: Shared logic for API key retrieval, instruction loading, output management, data handling
- `models`: Typed dataclasses for API responses
- `utils`: File scanning, paper detection, and helpers
- **Plugin System**: Commands, skills, and templates for Claude Code integration

## Data Models

- `ProgressUpdate`: real-time progress updates (stage, message, timestamp, details)
- `PaperResult`: final result with status, files, metadata, citations, token_usage, and errors
- `PaperMetadata`: title, created_at, topic, word_count
- `PaperFiles`: all relevant paths (final, drafts, references, figures, data, logs)
- `TokenUsage`: token consumption statistics (input_tokens, output_tokens, total_tokens, cache stats)

All models are fully typed and serializable to dictionaries.

## API Design

- Async generator pattern for real-time updates and a final, comprehensive result
- Stateless operation per invocation
- Robust error handling with `success | partial | failed` status
- Automatic paper directory detection and file scanning

## Local Development

### Setup

```bash
uv sync
```

Environment variables:

- `ANTHROPIC_API_KEY` (required)
- `OPENROUTER_API_KEY` (optional, for research lookup)

### Run

```bash
# CLI
uv run scientific-writer

# Example API usage
uv run python example_api_usage.py
```

## Testing and Quality

- Full type hints across the package
- Lint/format according to project defaults
- Validate imports and API signatures locally via example usage

## Plugin Development

### Testing Plugin Locally

For local plugin development and testing:

1. **Create test marketplace** (see `TESTING_INSTRUCTIONS.md`):
   ```bash
   cd ..
   mkdir -p test-marketplace/.claude-plugin
   ```

2. **Configure marketplace** with relative path to your local plugin:
   ```json
   {
     "name": "test-marketplace",
     "plugins": [{
       "name": "claude-scientific-writer",
       "source": "../claude-scientific-writer"
     }]
   }
   ```

3. **Add marketplace in Claude Code**:
   ```
   /plugin marketplace add ../test-marketplace
   ```

4. **Install plugin**:
   ```
   /plugin install claude-scientific-writer@test-marketplace
   ```

5. **Test in a project**:
   ```
   /scientific-writer:init
   ```

### Plugin Structure Requirements

- **`.claude-plugin/plugin.json`** - Plugin metadata
- **`commands/`** - Command definitions (YAML frontmatter required)
- **`skills/`** - Skill definitions (each with SKILL.md + YAML frontmatter)
- **`templates/`** - Template files (CLAUDE.scientific-writer.md)

### Adding New Skills

1. Create directory in `skills/`
2. Add `SKILL.md` with YAML frontmatter:
   ```yaml
   ---
   name: skill-name
   description: Brief description
   allowed-tools: [read_file, write, etc.]
   ---
   ```
3. Add references, scripts, assets as needed
4. Test skill availability after plugin reinstall

## Release Notes

v2.7.0 highlights:

- **Claude Code Plugin Focus** - Optimized for IDE integration
- Plugin installation with `/scientific-writer:init`
- All 19+ skills accessible via plugin
- Streamlined IDE workflow

v2.0 highlights:

- Programmatic API via `generate_paper`
- Progress streaming and comprehensive JSON results
- Modular package structure with entry points
- 100% CLI backward compatibility

See `CHANGELOG.md` for details.

## Migration Guides

### v1.x -> v2.0

- CLI remains identical (`scientific-writer`)
- New package structure replaces single-file script
- For programmatic use, import from `scientific_writer`

Example:

```python
from scientific_writer import generate_paper
```

### CLI/API -> Plugin (v2.7.0)

For best IDE experience:
- Install as Claude Code plugin (recommended)
- Use `/scientific-writer:init` in your project
- Access all skills directly in IDE
- No CLI required for most workflows

## Contributing

1. Fork and create a feature branch
2. `uv sync` to install dependencies
3. Make changes with clear commits
4. Test locally (CLI, API, and plugin if applicable)
5. Ensure all examples run
6. Update documentation if needed
7. Open a pull request with a concise description

## Project Links

- `README.md` — entry point and quick start
- `Docs/API.md` — full API reference
- `Docs/TROUBLESHOOTING.md` — troubleshooting
- `Docs/SKILLS.md` — skills overview
- `CHANGELOG.md` — release history
- `CLAUDE.md` — system instructions (kept at root)


Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.