From Fedora Project Wiki

Here is the template I use for doing package reviews.

- Package meets naming and packaging guidelines
- Spec file matches base package name.
- Spec has consistant macro usage.
- Meets Packaging Guidelines.
- License
- License field in spec matches
- License file included in package
- Spec in American English
- Spec is legible.
- Sources match upstream md5sum:

- Package needs ExcludeArch
- BuildRequires correct
- Spec handles locales/find_lang
- Package is relocatable and has a reason to be.
- Package has %defattr and permissions on files is good.
- Package has a correct %clean section.
- Package has correct buildroot
%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
- Package is code or permissible content.
- Doc subpackage needed/used.
- Packages %doc files don't affect runtime.

- Headers/static libs in -devel subpackage.
- Spec has needed ldconfig in post and postun
- .pc files in -devel subpackage/requires pkgconfig
- .so files in -devel subpackage.
- -devel package Requires: %{name} = %{version}-%{release}
- .la files are removed.

- Package is a GUI app and has a .desktop file

- Package compiles and builds on at least one arch.
- Package has no duplicate files in %files.
- Package doesn't own any directories other packages own.
- Package owns all the directories it creates.
- No rpmlint output.
- final provides and requires are sane:
(include output of for i in *rpm; do echo $i; rpm -qp --provides $i; echo =; rpm -qp --requires $i; echo; done
manually indented after checking each line.  I also remove the rpmlib junk and anything provided by glibc.)

SHOULD Items:

- Should build in mock.
- Should build on all supported archs
- Should function as described.
- Should have sane scriptlets.
- Should have subpackages require base package with fully versioned depend.
- Should have dist tag
- Should package latest version
- check for outstanding bugs on package. (For core merge reviews)

Issues:

1.