---
name: biz-journals
description: Generate Scopus ISSN boolean queries based on academic journal rankings (ABDC, AJG, FT50). Use whenever the user wants to build a Scopus search query filtered by journal quality, asks about journal rankings or grades, needs ISSN lists for specific journal tiers, or mentions Scopus queries, journal ranking systems, ABDC, AJG, ABS list, Academic Journal Guide, or FT50. Also triggers when users ask which journals are in a particular ranking tier, or want to restrict a literature search to top-tier outlets.
allowed-tools: Bash, Read, AskUserQuestion
---

# Biz Journals — Scopus Query Builder

Generate Scopus boolean ISSN queries by filtering journals across three ranking systems.

## Ranking Systems

| System | Full Name | Grades (highest → lowest) | Year |
|--------|-----------|--------------------------|------|
| ABDC | Australian Business Deans Council | A* > A > B > C | 2025 |
| AJG | Academic Journal Guide (ABS list) | 4* > 4 > 3 > 2 > 1 | 2021 |
| FT50 | Financial Times 50 | FT-50 (single tier) | 2016 |

## How to Use

Run the bundled Python script at `scripts/scopus_query.py`. Resolve `<skill-path>` in the commands below to the absolute path of this skill's directory (the folder containing this SKILL.md).

### Data Files

The `data/` directory contains three JSON files, each an array of `{issn, title, field, grade}` objects:

- `data/abdc.json` — ~4,665 journals across 17 fields (ABDC 2025)
- `data/ajg.json` — ~2,500 journals across 22 fields (AJG 2021)
- `data/ft50.json` — ~75 journals, single tier (FT50 2016)

The script reads these automatically. To look up a specific journal by title (e.g., "Is The Accounting Review ABDC A\*?"), grep the relevant JSON file directly rather than using the script.

### Commands

**Generate a Scopus query:**

```bash
python <skill-path>/scripts/scopus_query.py generate --filters '<JSON>'
```

The `--filters` argument takes a JSON array. Each filter object has:

- `system` (required): `"abdc"`, `"ajg"`, or `"ft50"`
- `grade` (required): target grade string (e.g., `"A*"`, `"4*"`, `"FT-50"`)
- `operator` (optional, default `"at_least"`): `"at_least"` includes the grade and everything above it; `"exactly"` includes only that grade
- `fields` (optional): array of discipline strings for case-insensitive filtering (e.g., `["Accounting", "Finance"]`)

Multiple filters are combined with OR logic. Duplicate ISSNs are removed automatically.

**List available grades:**

```bash
python <skill-path>/scripts/scopus_query.py list-grades --system abdc
```

**List available fields/disciplines:**

```bash
python <skill-path>/scripts/scopus_query.py list-fields --system ajg
```

### Examples

ABDC A* and A journals in Accounting:
```bash
python <skill-path>/scripts/scopus_query.py generate --filters '[{"system":"abdc","grade":"A","operator":"at_least","fields":["Accounting"]}]'
```

AJG 4* journals only, all fields:
```bash
python <skill-path>/scripts/scopus_query.py generate --filters '[{"system":"ajg","grade":"4*","operator":"exactly"}]'
```

FT50 journals plus all ABDC A* journals:
```bash
python <skill-path>/scripts/scopus_query.py generate --filters '[{"system":"ft50","grade":"FT-50"},{"system":"abdc","grade":"A*","operator":"exactly"}]'
```

## Scopus Search Syntax Reference

If the user needs help composing a full Scopus query — combining the ISSN output with topic filters, date ranges, field codes, or other operators — read `references/scopus-search-syntax.md` before responding. This reference covers boolean operators (AND, OR, AND NOT), proximity operators (W/n, PRE/n), all field codes (TITLE-ABS-KEY, AUTH, SUBJAREA, PUBYEAR, DOCTYPE, etc.), phrase searching, wildcards, and operator precedence.

The most common pattern is combining the ISSN output with topic and date filters:

```
(ISSN(...) OR ISSN(...) OR ...) AND TITLE-ABS-KEY("earnings management") AND PUBYEAR AFT 2014
```

Also read the reference when the user asks about Scopus search syntax, field codes, or how to structure an advanced search — even if they are not generating an ISSN query.

## Important Notes

- The output is a parenthesized boolean query: `(ISSN(0001-4826) OR ISSN(0361-3682) OR ...)`
- Scopus API has an ~8,000 character query limit, but Scopus web interface does not. When a query exceeds this, ask the user whether to split it into numbered parts that each fit under the limit. The user can combine these in Scopus with OR. Broad queries (e.g., ABDC A+ across all fields = ~1,600 journals) will produce multiple parts; narrow queries with a field filter typically fit in one.
- When the user asks for "top journals" without specifying a system, ask which ranking system they prefer (ABDC, AJG, or FT50), or default to the one most relevant to their context.
- The query output can be pasted directly into Scopus Advanced Search, combined with other search terms using AND.
