I like when people send pull requests. It validates my existence. If you want to help out, check the issue list or search the codebase for
TODO. Don't worry if you lack experience writing C. If I think a pull request isn't ready to be merged, I'll give feedback in comments. Once everything looks good, I'll comment on your pull request with a cool animated gif and hit the merge button.
If you contribute, you might want to run the test suite before and after writing some code, just to make sure you did not break anything. Adding tests along with your code is nice to have, because it makes regressions less likely to happen. Also, if you think you have found a bug, contributing a failing test case is a good way of making your point and adding value at the same time.
The test suite uses Cram. You'll need to build ag first, and then you can run the suite from the root of the repository :
Ag can search files which belong to a certain class for example
ag --html test
searches all files with the extension defined in lang.c.
lang.c adds the functionality and
list_file_types.t adds the test case.
Without adding a test case the test will fail.