mirror of
https://gitlab.com/Anson-Projects/projects.git
synced 2025-09-14 09:35:04 +00:00
- Add ghost profile for iframe-optimized content - Create ghost-iframe.css with minimal styling - Update GitLab CI to build both main site and ghost-content versions - Ghost profile removes navbar, uses minimal theme, article layout
3.4 KiB
3.4 KiB
Agent Instructions for Anson's Projects
This repository contains a multi-language technical blog with Rust automation tools, Julia data analysis notebooks, and Quarto documentation.
Build/Lint/Test Commands
Rust (ghost-upload/)
- Build:
cd ghost-upload && cargo build
- Run:
cd ghost-upload && cargo run
- Test:
cd ghost-upload && cargo test
- Lint:
cd ghost-upload && cargo clippy
- Format:
cd ghost-upload && cargo fmt
- Single test:
cd ghost-upload && cargo test <test_name>
Julia (posts/*/ and root)
- Run notebook:
julia <filename>.jl
- Package management:
julia -e "using Pkg; Pkg.instantiate()"
- Precompile:
julia -e "using Pkg; Pkg.precompile()"
Quarto (Documentation)
- Build site:
quarto render --to html --output-dir public
- Preview:
quarto preview
- Check:
quarto check
Docker
- Build:
docker build -t projects .
- Run:
docker run projects
Code Style Guidelines
Rust
- Formatting: Use
cargo fmt
(4-space indentation, standard Rust style) - Linting: Use
cargo clippy
and fix all warnings - Imports: Group by standard library, external crates, then local modules
- Error Handling: Prefer
?
operator overunwrap()
, use custom error types for complex cases - Naming: snake_case for functions/variables, PascalCase for structs/enums
- Documentation: Use
///
for public APIs,//
for implementation details - Async: Use
async fn
for async functions, avoid blocking operations in async contexts
Julia
- Formatting: 4-space indentation, spaces around operators
- Imports: Use
using
for packages, group at top of file - Naming: snake_case for functions and variables
- Types: Use descriptive names, consider performance implications
- Plotting: Use Plots.jl with consistent themes (e.g.,
theme(:ggplot2)
) - DataFrames: Use pipe operators
|>
for data transformations - Error Handling: Use try-catch blocks for expected errors
Quarto (.qmd files)
- YAML frontmatter: Include title, date, and relevant metadata
- Code chunks: Use appropriate language engines (
{rust}
,{julia}
,{python}
) - Output: Set
echo: false
for clean output,warning: false
to suppress warnings - Figures: Use descriptive captions and alt text
- Citations: Use
@citekey
format with bibliography files
General
- Git: Write clear commit messages, use conventional commits when possible
- Documentation: Update README.md for significant changes
- Dependencies: Keep dependencies minimal and up-to-date
- Security: Never commit API keys or sensitive credentials
- Performance: Profile code before optimizing, focus on readability first
Project Structure
ghost-upload/
: Rust automation for blog post publishingposts/
: Individual blog posts (Quarto markdown + Julia/Python code)- Root: Quarto website configuration and shared assets
Environment Variables
kagi_api_key
: For Kagi API summarization (Rust)admin_api_key
: For Ghost CMS API (Rust)
Testing Strategy
- Rust: Unit tests for core functionality, integration tests for API interactions
- Julia: Visual validation of plots and data transformations
- Quarto: Manual review of rendered output and links
Deployment
- Uses GitLab CI/CD with Docker
- Deploys to static hosting after Quarto build
- Rust component runs separately for content synchronization