# dm-last30days

DuckMind extension that exposes the upstream [`mvanhorn/last30days-skill`](https://github.com/mvanhorn/last30days-skill) engine as a `/last30days` command.

## Usage

```text
/last30days OpenAI --competitors
/last30days "OpenAI vs Anthropic vs xAI" --competitors-list "Anthropic,xAI"
/last30days Nano Banana Pro prompting --emit=compact
```

The bundled engine requires Python 3.12+. The extension tries:

1. `LAST30DAYS_PYTHON` if set.
2. `python3.13` or `python3.12` on `PATH`.
3. `uv run --python 3.12 --no-project python ...` when `uv` is available.
4. `python3` as a final fallback, which will print the upstream Python-version error if it is too old.

The exact `/last30days OpenAI --competitors` command may exit with upstream guidance when no WebSearch/competitor plan or search API is available. That is expected: the command wrapper preserves stdout/stderr so the user can follow the recommended `--competitors-plan` or `--competitors-list` path.

## Finance and market-data coordination

Use `/last30days` when a finance, stock, or market question needs recent 30-day narrative context: news, social sentiment, catalysts, controversy, management events, product launches, or community reaction. Pair it with an available market-data source when the user also needs prices or OHLCV:

- The market-data source supplies OHLCV/source/date coverage.
- `/last30days "<ticker company sector context>" --emit=compact` supplies recent narrative/community context.

For pure price-history/table/chart requests, do not run `/last30days` unless the user asks for recent narrative context.
