Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
name: Bug Report
about: Report a bug to help us improve aicheck
title: "[BUG] "
labels: bug
assignees: ''
---

## Description

A clear description of the bug.

## Steps to Reproduce

1. Run `aic check ...`
2. ...

## Expected Behavior

What you expected to happen.

## Actual Behavior

What actually happened. Include any error output.

## Environment

- **OS**: (e.g., macOS 14, Ubuntu 24.04)
- **aicheck version**: (`aic --version`)
- **Rust version**: (`rustc --version`)

## Sample File

If possible, attach or link to a sample file that reproduces the issue.
23 changes: 23 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
name: Feature Request
about: Suggest an idea for aicheck
title: "[FEATURE] "
labels: enhancement
assignees: ''
---

## Problem

A clear description of the problem or limitation you're experiencing.

## Proposed Solution

Describe the feature or improvement you'd like to see.

## Alternatives Considered

Any alternative solutions or features you've considered.

## Additional Context

Any other context, references, or screenshots about the feature request.
15 changes: 15 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
## Summary

Brief description of the changes.

## Changes

-

## Checklist

- [ ] `cargo fmt -- --check` passes
- [ ] `cargo clippy -- -D warnings` passes
- [ ] `cargo test` passes
- [ ] New detection methods include appropriate confidence tiers
- [ ] Documentation updated (if applicable)
3 changes: 2 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,9 @@ jobs:
lfs: true
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
components: clippy, rustfmt
- uses: Swatinem/rust-cache@v2
- run: cargo fmt -- --check
- run: cargo clippy -- -D warnings
- run: cargo test
- run: cargo build --release
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,7 @@
*.swp
.idea/
.vscode/
.context/
.env*
*.pem
*.key
32 changes: 32 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.1.0] - 2025-06-01

### Added

- CLI commands: `aic check [PATHS]` and `aic info <FILE>`
- C2PA manifest detection and validation
- XMP/IPTC metadata analysis for AI provenance signals
- EXIF heuristic analysis
- PNG text chunk inspection
- MP4 container metadata parsing
- ID3 audio tag detection
- WAV container metadata analysis
- Filename pattern matching for known AI tools
- Audio spectral analysis for synthetic content
- Invisible watermark detection (DWT-DCT)
- Confidence tiers: HIGH, MEDIUM, LOW
- Support for image formats: JPEG, PNG, WebP, AVIF, HEIF, TIFF, GIF, BMP
- Support for video formats: MP4, MOV, AVI, WebM
- Support for audio formats: MP3, M4A, WAV
- Support for document formats: PDF
- JSON output mode (`--json`)
- Quiet mode (`--quiet`)
- Deep analysis mode (`--deep`)
- Internationalization support for 7 languages (en, de, es, hi, ja, ko, zh-CN)
- Rustdoc documentation with GitHub Pages deployment
21 changes: 21 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Contributor Covenant Code of Conduct

This project follows the [Contributor Covenant v2.1](https://www.contributor-covenant.org/version/2/1/code_of_conduct/).

## Our Pledge

We pledge to make participation in our community a welcoming experience for everyone, regardless of background or identity.

## Our Standards

Positive behavior includes using welcoming language, respecting differing viewpoints, accepting constructive feedback, and focusing on what is best for the community.

Unacceptable behavior includes personal or political attacks, publishing others' private information without permission, and other conduct which could reasonably be considered inappropriate in a professional setting.

## Enforcement

Instances of unacceptable behavior may be reported to the project maintainers. All complaints will be reviewed and investigated promptly and fairly.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.1.
58 changes: 58 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Contributing to AICheck

Thanks for your interest in contributing! Here's how to get started.

## Development Setup

```bash
# Clone the repo
git clone https://github.com/MatrixA/aicheck.git
cd aicheck

# Build
cargo build

# Run tests
cargo test

# Run the CLI
cargo run -- check photo.jpg
```

Requires **Rust 1.86+**.

## Before Submitting a PR

Please make sure all checks pass locally:

```bash
cargo fmt -- --check # formatting
cargo clippy -- -D warnings # lints
cargo test # tests
```

## Pull Request Process

1. Fork the repo and create a branch from `main`
2. Make your changes
3. Ensure all checks above pass
4. Open a PR with a clear description of what changed and why

## Adding a New AI Tool

To add detection for a new AI tool, update the pattern list in `src/known_tools.rs`. Each entry needs a case-insensitive pattern and a canonical tool name.

## Adding a New Detection Method

New detectors go in `src/detector/`. Implement detection logic, then register it in `src/detector/mod.rs` within `run_all_detectors()`.

## Reporting Bugs

Use the [bug report template](https://github.com/MatrixA/aicheck/issues/new?template=bug_report.md) and include:
- The file you tested (or a description if you can't share it)
- Expected vs actual output
- Your OS and Rust version

## License

By contributing, you agree that your contributions will be licensed under AGPL-3.0-or-later.
3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,15 @@
name = "aicheck"
version = "0.1.0"
edition = "2021"
rust-version = "1.86"
description = "Detect AI-generated content via provenance signals (C2PA, XMP/IPTC, EXIF)"
license = "AGPL-3.0-or-later"
repository = "https://github.com/MatrixA/aicheck"
homepage = "https://github.com/MatrixA/aicheck"
documentation = "https://matrixa.github.io/aicheck/"
keywords = ["ai-detection", "c2pa", "watermark", "metadata", "forensics"]
categories = ["command-line-utilities", "multimedia"]
exclude = [".github/", ".context/", "docs/", "tests/fixtures/"]

[lib]
name = "aicheck"
Expand Down
17 changes: 17 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Security Policy

## Supported Versions

| Version | Supported |
|---------|-----------|
| 0.1.x | Yes |

## Reporting a Vulnerability

If you discover a security vulnerability, please report it responsibly:

1. **Do not** open a public issue
2. Use [GitHub's private vulnerability reporting](https://github.com/MatrixA/aicheck/security/advisories/new)
3. Include a description of the vulnerability, steps to reproduce, and potential impact

You should receive an initial response within 72 hours. We'll work with you to understand the issue and coordinate a fix before any public disclosure.
Loading
Loading